{"openapi":"3.1.0","info":{"title":"DALP API v1","version":"1","description":"The frozen Platform API at `/api/v1` is the organisation-scoped integration surface for existing v1 clients. New work should use `/api/v2`.\n\nAuthenticate with `X-Api-Key` or a session cookie. Public auth routes, such as sign-in, need no credential. Two-factor verification after a password sign-in reads the pending two-factor cookie. Each auth operation's `security` names the credentials it accepts. An API key inherits the creating user's permissions and a read or read-write scope. Session writes still require wallet verification. API keys skip that check.\n\nOmit the context headers to use the organisation default network, the session participant, and the organisation executor policy. Set `X-Chain-Id`, `X-Participant`, or `X-Executor` (`eoa` or `smart-wallet`) only when the request must override one of those defaults.\n\nSend `Idempotency-Key` on a mutation you may retry. The same key with the same method, path, and body returns the first accepted result instead of submitting the work twice. If you omit the header, the platform generates a UUIDv7 key you cannot replay after a lost response.\n\nv1 mutations do not use the v2 `Prefer` contract. When a route queues chain work, treat the returned transaction record as the durable result and do not submit the same instruction again.\n\nErrors use one envelope with `code`, `status`, `message`, and `data`. Read `data.id` for the stable DALP error id, `data.why` for the cause, and `data.fix` for the next action. Honour `data.retryable`. Include `data.requestId` and the `X-Request-Id` response header when you contact support.","license":{"name":"SETTLEMINT COMMERCIAL CUSTOMER SOURCE LICENSE","url":"https://github.com/settlemint/dalp/blob/main/LICENSE"}},"paths":{"/api/v1/account/search":{"get":{"tags":["Accounts and portfolio"],"operationId":"v1/account/search","parameters":[{"name":"query","in":"query","schema":{"type":"string","minLength":1,"description":"Address prefix to match. The search is case-insensitive hex text only. ENS names are not resolved.","examples":["0x71C7","0x71C7656EC7"]},"required":true},{"name":"limit","in":"query","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"Accounts whose address matched the query prefix. The array may be empty when no indexed account matches.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccountSearchResult"},"description":"Accounts whose address matched the query prefix. The array may be empty when no indexed account matches.","examples":[[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","isContract":false,"displayName":"Northwind Coffee Treasury"}]]},"examples":{"example-1":{"value":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","isContract":false,"displayName":"Northwind Coffee Treasury"}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307","DALP-9260"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns accounts whose address matches the `query` prefix on the active chain. The match is address text only, not ENS, and `limit` defaults to 10 with a maximum of 50. This read is idempotent: repeat the same query after a short delay if the indexer is still catching up.","summary":"Search indexed accounts","x-dalp-auth":"api-key"}},"/api/v1/actions/list":{"get":{"tags":["Actions"],"operationId":"v1/actions/list","parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["PENDING","UPCOMING","EXECUTED","EXPIRED"],"description":"Filter actions by their current status","examples":["PENDING","EXECUTED"]},"required":false},{"name":"targets","in":"query","schema":{"type":"array","items":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"description":"Filter actions by their target addresses"},"required":false},{"name":"name","in":"query","schema":{"type":"string","description":"Filter actions by their name","examples":["Transfer Approval","KYC Update"]},"required":false},{"name":"actionType","in":"query","schema":{"type":"string","enum":["MatureBond","RedeemBond","ClaimYield","ClaimDividend","ApproveMaturityAllowance","ApproveYieldAllowance","ApproveXvPSettlement","ExecuteXvPSettlement","UpdateKYCData","MultisigApproval","custody-pending","CheckerApproval","CastVote","CastPollBallot","ActivateVotingPower","MultisigInvite"],"description":"Filter actions by canonical action type","examples":["ClaimYield","ApproveXvPSettlement"]},"required":false}],"responses":{"200":{"description":"Every action the caller can execute that matches the v1 filters. There is no pagination envelope on this frozen surface.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionsListResponseV1"},"examples":{"example-1":{"value":[{"id":"xvp-approve:0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","actionType":"ApproveXvPSettlement","name":"Approve Northwind Series A settlement","target":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","tokenAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","activeAt":"2026-03-15T09:12:41.000Z","status":"PENDING","executedAt":null,"executedBy":null,"expiresAt":"2026-04-20T16:00:00.000Z","source":"on-chain","executor":{"id":"executor:northwind-treasury","executors":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]}}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-12253","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-0671","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0735","DALP-12307","DALP-9260"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the on-chain and off-chain actions the authenticated caller can still execute in the active organization. Each row includes the frozen v1 `executor` object so a client can present who may sign. Filter by `status`, `actionType`, `name`, or `targets`. There is no pagination envelope on this frozen surface. Repeating the request is safe; it does not change action state.","summary":"List every callable action","x-dalp-auth":"api-key"}},"/api/v1/external-token":{"get":{"tags":["External tokens"],"operationId":"v1/externalToken/list","parameters":[{"name":"orderBy","in":"query","schema":{"type":"string","description":"Field to order by","examples":["name","symbol","type"]},"required":false},{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"],"description":"Order direction","examples":["asc","desc"]},"required":false}],"responses":{"200":{"description":"Every external token in the organization's registry. `totalCount` is the full registry size, not a page size.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalTokenListResponse"},"examples":{"example-1":{"value":{"tokens":[{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","name":"USD Coin","symbol":"USDC","decimals":6,"totalSupply":"25000000","type":"stablecoin","externalRegisteredAt":"2026-03-04T09:12:41.000Z","externalRegisteredBy":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"externalDetectedInterfaces":["ERC20"],"implementsERC3643":false,"implementsSMART":false}],"totalCount":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307","DALP-9260"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns tokens the organization registered in its external-token registry rather than tokens it issued itself. Order with `orderBy` and `orderDirection`. The list is indexed state, so a token appears only after the registration transaction is indexed. There is no pagination envelope on this frozen surface. Repeating the request is safe.","summary":"List every registered external token","x-dalp-auth":"api-key"}},"/api/v1/external-token/register":{"post":{"tags":["External tokens"],"operationId":"v1/externalToken/register","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The registration transaction hash and the token that was submitted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalTokenRegisterOutput"},"examples":{"example-1":{"value":{"txHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae","tokenAddress":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0736","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The external token wasn't registered","data":{"id":"DALP-0736","why":"The address did not pass on-chain ERC-20 metadata verification, or it is already registered.","fix":"Check that the address exposes name, symbol, and decimals on this chain, and that it is not registered already.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0735","DALP-12038","DALP-12106","DALP-12307","DALP-9260"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Submits a registration for an ERC-20 that already exists on the active chain and waits for the transaction hash. The contract must expose readable `symbol` and `decimals`. The same address cannot be registered twice. Do not retry blindly after an unknown outcome: inspect the returned hash or the registry list first.","summary":"Register an external token and wait","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalTokenRegisterInput"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/user/assets":{"get":{"tags":["Accounts and portfolio"],"operationId":"v1/user/assets","parameters":[],"responses":{"200":{"description":"Token balances held by the requested wallet. Amounts are scaled decimal strings. `valueInBaseCurrency` is null when no price path exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAssetsResponse"},"examples":{"example-1":{"value":[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72","value":"125000","frozen":"0","available":"125000","valueInBaseCurrency":"125000.00","priceInBaseCurrencyReliable":true,"token":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","name":"Northwind Coffee Bond","symbol":"NCB","decimals":18,"totalSupply":"50000000","yield":null}}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-12253","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438","DALP-9439"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0733","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Portfolio resource was not found","data":{"id":"DALP-0733","why":"The requested portfolio resource does not exist in the active organization.","fix":"Verify the identifier and the active organization, then request it again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9252"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The metadata key cannot be used for this asset query","data":{"id":"DALP-9252","why":"The requested metadata key is unknown or is not eligible for the selected filter or grouping operation.","fix":"Use one of the available metadata keys that supports this query operation.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307","DALP-9260"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns token balances held by the authenticated user's wallets on the active chain. Omit `wallet` to aggregate every linked wallet; send a wallet the caller may read to scope the result. Amounts are scaled decimal strings. Repeating the request is safe and reflects the latest indexed balances.","summary":"List the caller's token balances","x-dalp-auth":"api-key"}},"/api/v1/fixed-yield-schedule/{scheduleAddress}":{"get":{"tags":["Yield and distributions"],"operationId":"v1/addons/fixedYield/read","parameters":[{"name":"scheduleAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Standalone fixed-yield schedule. Periods list completed and open coupon windows. Use currentPeriod and nextPeriod to decide whether to claim.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"rate":{"type":"string"},"interval":{"type":"string"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"symbol":{"type":"string"}},"required":["id","decimals","symbol"],"additionalProperties":false},"currentPeriod":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}-period-\\d+$"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"completed":{"type":"boolean"}},"required":["id","startDate","endDate","totalClaimed","totalUnclaimedYield","totalYield","completed"],"additionalProperties":false},{"type":"null"}]},"nextPeriod":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}-period-\\d+$"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"completed":{"type":"boolean"}},"required":["id","startDate","endDate","totalClaimed","totalUnclaimedYield","totalYield","completed"],"additionalProperties":false},{"type":"null"}]},"periods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}-period-\\d+$"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"completed":{"type":"boolean"}},"required":["id","startDate","endDate","totalClaimed","totalUnclaimedYield","totalYield","completed"],"additionalProperties":false}}},"required":["id","startDate","endDate","rate","interval","totalClaimed","totalUnclaimedYield","totalYield","denominationAsset","currentPeriod","nextPeriod","periods"],"additionalProperties":false,"description":"Standalone fixed-yield schedule. Periods list completed and open coupon windows. Use currentPeriod and nextPeriod to decide whether to claim.","examples":[{"id":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6","startDate":"2026-03-04T09:12:41.000Z","endDate":"2029-03-04T00:00:00.000Z","rate":"500","interval":"MONTHLY","totalClaimed":"98000.00","totalUnclaimedYield":"27000.00","totalYield":"125000.00","denominationAsset":{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3","decimals":6,"symbol":"EURC"},"currentPeriod":{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-2","startDate":"2026-04-04T09:12:41.000Z","endDate":"2026-05-04T09:12:41.000Z","totalClaimed":"0","totalUnclaimedYield":"25000.00","totalYield":"25000.00","completed":false},"nextPeriod":null,"periods":[{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-1","startDate":"2026-03-04T09:12:41.000Z","endDate":"2026-04-04T09:12:41.000Z","totalClaimed":"98000.00","totalUnclaimedYield":"2000.00","totalYield":"100000.00","completed":true},{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-2","startDate":"2026-04-04T09:12:41.000Z","endDate":"2026-05-04T09:12:41.000Z","totalClaimed":"0","totalUnclaimedYield":"25000.00","totalYield":"25000.00","completed":false}]}]},"examples":{"example-1":{"value":{"id":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6","startDate":"2026-03-04T09:12:41.000Z","endDate":"2029-03-04T00:00:00.000Z","rate":"500","interval":"MONTHLY","totalClaimed":"98000.00","totalUnclaimedYield":"27000.00","totalYield":"125000.00","denominationAsset":{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3","decimals":6,"symbol":"EURC"},"currentPeriod":{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-2","startDate":"2026-04-04T09:12:41.000Z","endDate":"2026-05-04T09:12:41.000Z","totalClaimed":"0","totalUnclaimedYield":"25000.00","totalYield":"25000.00","completed":false},"nextPeriod":null,"periods":[{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-1","startDate":"2026-03-04T09:12:41.000Z","endDate":"2026-04-04T09:12:41.000Z","totalClaimed":"98000.00","totalUnclaimedYield":"2000.00","totalYield":"100000.00","completed":true},{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-2","startDate":"2026-04-04T09:12:41.000Z","endDate":"2026-05-04T09:12:41.000Z","totalClaimed":"0","totalUnclaimedYield":"25000.00","totalYield":"25000.00","completed":false}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9470","DALP-9471","DALP-9472","DALP-9473","DALP-9474","DALP-9475","DALP-9476"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12307","DALP-9266"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the frozen v1 representation of one standalone fixed-yield schedule identified by scheduleAddress. The schedule is not a token-attached feature. The read is idempotent. Use the returned periods to decide whether to claim, top up, or withdraw.","summary":"Read a fixed-yield schedule","x-dalp-auth":"session-or-api-key"}},"/api/v1/fixed-yield-schedule":{"post":{"tags":["Yield and distributions"],"operationId":"v1/addons/fixedYield/create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Standalone fixed-yield schedule. Periods list completed and open coupon windows. Use currentPeriod and nextPeriod to decide whether to claim.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"rate":{"type":"string"},"interval":{"type":"string"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"symbol":{"type":"string"}},"required":["id","decimals","symbol"],"additionalProperties":false},"currentPeriod":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}-period-\\d+$"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"completed":{"type":"boolean"}},"required":["id","startDate","endDate","totalClaimed","totalUnclaimedYield","totalYield","completed"],"additionalProperties":false},{"type":"null"}]},"nextPeriod":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}-period-\\d+$"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"completed":{"type":"boolean"}},"required":["id","startDate","endDate","totalClaimed","totalUnclaimedYield","totalYield","completed"],"additionalProperties":false},{"type":"null"}]},"periods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}-period-\\d+$"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"completed":{"type":"boolean"}},"required":["id","startDate","endDate","totalClaimed","totalUnclaimedYield","totalYield","completed"],"additionalProperties":false}}},"required":["id","startDate","endDate","rate","interval","totalClaimed","totalUnclaimedYield","totalYield","denominationAsset","currentPeriod","nextPeriod","periods"],"additionalProperties":false,"description":"Standalone fixed-yield schedule. Periods list completed and open coupon windows. Use currentPeriod and nextPeriod to decide whether to claim.","examples":[{"id":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6","startDate":"2026-03-04T09:12:41.000Z","endDate":"2029-03-04T00:00:00.000Z","rate":"500","interval":"MONTHLY","totalClaimed":"98000.00","totalUnclaimedYield":"27000.00","totalYield":"125000.00","denominationAsset":{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3","decimals":6,"symbol":"EURC"},"currentPeriod":{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-2","startDate":"2026-04-04T09:12:41.000Z","endDate":"2026-05-04T09:12:41.000Z","totalClaimed":"0","totalUnclaimedYield":"25000.00","totalYield":"25000.00","completed":false},"nextPeriod":null,"periods":[{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-1","startDate":"2026-03-04T09:12:41.000Z","endDate":"2026-04-04T09:12:41.000Z","totalClaimed":"98000.00","totalUnclaimedYield":"2000.00","totalYield":"100000.00","completed":true},{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-2","startDate":"2026-04-04T09:12:41.000Z","endDate":"2026-05-04T09:12:41.000Z","totalClaimed":"0","totalUnclaimedYield":"25000.00","totalYield":"25000.00","completed":false}]}]},"examples":{"example-1":{"value":{"id":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6","startDate":"2026-03-04T09:12:41.000Z","endDate":"2029-03-04T00:00:00.000Z","rate":"500","interval":"MONTHLY","totalClaimed":"98000.00","totalUnclaimedYield":"27000.00","totalYield":"125000.00","denominationAsset":{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3","decimals":6,"symbol":"EURC"},"currentPeriod":{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-2","startDate":"2026-04-04T09:12:41.000Z","endDate":"2026-05-04T09:12:41.000Z","totalClaimed":"0","totalUnclaimedYield":"25000.00","totalYield":"25000.00","completed":false},"nextPeriod":null,"periods":[{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-1","startDate":"2026-03-04T09:12:41.000Z","endDate":"2026-04-04T09:12:41.000Z","totalClaimed":"98000.00","totalUnclaimedYield":"2000.00","totalYield":"100000.00","completed":true},{"id":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6-period-2","startDate":"2026-04-04T09:12:41.000Z","endDate":"2026-05-04T09:12:41.000Z","totalClaimed":"0","totalUnclaimedYield":"25000.00","totalYield":"25000.00","completed":false}]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9439"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9470","DALP-9471","DALP-9472","DALP-9473","DALP-9474","DALP-9475","DALP-9476"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12021","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9266"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Creates a standalone fixed-yield schedule for the named token and waits for settlement. This v1 route does not queue. A second identical call starts another deployment. After settlement, top up denomination assets so holders can claim completed periods.","summary":"Create a fixed-yield schedule","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"yieldRate":{"$ref":"#/components/schemas/BasisPoints"},"paymentInterval":{"anyOf":[{"$ref":"#/components/schemas/TimeInterval"},{"type":"integer"}],"description":"Coupon interval as a named value or as seconds.","examples":["MONTHLY"]},"startTime":{"$ref":"#/components/schemas/TimestampEncoded"},"endTime":{"$ref":"#/components/schemas/TimestampEncoded"},"token":{"$ref":"#/components/schemas/EvmAddress"},"countryCode":{"anyOf":[{"type":"string","pattern":"^\\d{1,3}$"},{"type":"number","multipleOf":1,"minimum":0,"maximum":999}]}},"required":["yieldRate","paymentInterval","token","countryCode"],"additionalProperties":false,"description":"Standalone fixed-yield schedule to deploy for the named token.","examples":[{"yieldRate":500,"paymentInterval":"MONTHLY","startTime":"1767225600","endTime":"1830297600","token":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","countryCode":840,"walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"}}]}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/fixed-yield-schedule/{scheduleAddress}/top-up":{"post":{"tags":["Yield and distributions"],"operationId":"v1/addons/fixedYield/topUp","parameters":[{"name":"scheduleAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Settled top-up or withdraw result for a standalone fixed-yield schedule.","content":{"application/json":{"schema":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the settled top-up or withdraw transaction.","examples":["0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24"]}},"required":["txHash"],"additionalProperties":false,"description":"Settled top-up or withdraw result for a standalone fixed-yield schedule.","examples":[{"txHash":"0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24"}]},"examples":{"example-1":{"value":{"txHash":"0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9470","DALP-9471","DALP-9472","DALP-9473","DALP-9474","DALP-9475","DALP-9476"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12021","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0076","DALP-0082","DALP-0083","DALP-0084","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9266"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Adds denomination assets to the named standalone schedule and waits for settlement. The amount is an integer decimal string in denomination base units. This v1 route does not queue. After settlement, holders can claim completed periods.","summary":"Top up a fixed-yield schedule","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"amount":{"$ref":"#/components/schemas/AssetAmount"},"tokenAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["amount","tokenAddress"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/fixed-yield-schedule/{scheduleAddress}/withdraw":{"post":{"tags":["Yield and distributions"],"operationId":"v1/addons/fixedYield/withdraw","parameters":[{"name":"scheduleAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Settled top-up or withdraw result for a standalone fixed-yield schedule.","content":{"application/json":{"schema":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the settled top-up or withdraw transaction.","examples":["0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24"]}},"required":["txHash"],"additionalProperties":false,"description":"Settled top-up or withdraw result for a standalone fixed-yield schedule.","examples":[{"txHash":"0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24"}]},"examples":{"example-1":{"value":{"txHash":"0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9470","DALP-9471","DALP-9472","DALP-9473","DALP-9474","DALP-9475","DALP-9476"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12021","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9266"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Withdraws denomination assets from the named standalone schedule to the recipient in the request body and waits for settlement. This v1 route does not queue. Use this for excess treasury funds, not for holder claims.","summary":"Withdraw from a fixed-yield schedule","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"amount":{"$ref":"#/components/schemas/AssetAmount"},"to":{"$ref":"#/components/schemas/EvmAddress"},"tokenAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["amount","to","tokenAddress"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/fixed-yield-schedule/{scheduleAddress}/claim":{"post":{"tags":["Yield and distributions"],"operationId":"v1/addons/fixedYield/claim","parameters":[{"name":"scheduleAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Settled claim result for a standalone fixed-yield schedule.","content":{"application/json":{"schema":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the claim transaction after settlement.","examples":["0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24"]},"complete":{"type":"boolean","description":"False when more completed periods remain. Call claim again to continue. True when the caller is caught up. Omitted for a queued accept response.","examples":[true]}},"required":["txHash"],"additionalProperties":false,"description":"Settled claim result for a standalone fixed-yield schedule.","examples":[{"txHash":"0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24","complete":true}]},"examples":{"example-1":{"value":{"txHash":"0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24","complete":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9470","DALP-9471","DALP-9472","DALP-9473","DALP-9474","DALP-9475","DALP-9476"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12021","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9266"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Claims completed standalone fixed-yield periods for the caller and waits for settlement. This v1 route does not queue. complete is false when more completed periods remain; call claim again to continue.","summary":"Claim fixed yield","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false}},"additionalProperties":false}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/exchange-rates/{baseCurrency}/{quoteCurrency}":{"get":{"tags":["Exchange rates"],"operationId":"v1/exchangeRates/read","parameters":[{"name":"baseCurrency","in":"path","schema":{"type":"string","pattern":"^[A-Z]{3}$"},"required":true},{"name":"quoteCurrency","in":"path","schema":{"type":"string","pattern":"^[A-Z]{3}$"},"required":true}],"responses":{"200":{"description":"The latest observation for the requested pair, or null when the pair has no positive observation yet. Repeat the call after a feed publishes a value.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeRatesReadOutput"},"examples":{"example-1":{"value":{"baseCurrency":"EUR","quoteCurrency":"USD","rate":1.0842,"effectiveAt":"2026-03-11T16:02:08.000Z"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the latest positive observation for the ISO 4217 base and quote pair in the path. The body is null when that pair has no observation yet. The call is a point-in-time read, so repeat it after a feed publishes a value.","summary":"Read an exchange rate","x-dalp-auth":"session-or-api-key"}},"/api/v1/exchange-rates":{"get":{"tags":["Exchange rates"],"operationId":"v1/exchangeRates/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Defaults to ascending."},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","description":"Sort field. Defaults to `id`."},"required":false},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"description":"Number of matching pairs to skip before this page."},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":200,"description":"Maximum pairs to return. Defaults to 25 and accepts at most 200."},"required":false},{"name":"baseCurrencies","in":"query","schema":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"},"description":"Limit the page to these ISO 4217 base currencies."},"required":false},{"name":"quoteCurrencies","in":"query","schema":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"},"description":"Limit the page to these ISO 4217 quote currencies."},"required":false}],"responses":{"200":{"description":"Offset page of configured exchange-rate pairs. `totalCount` is the full match count, not the length of `items`. Repeat the call with a new `offset` to walk the remaining rows.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeRatesListOutput"},"examples":{"example-1":{"value":{"items":[{"baseCurrency":"EUR","quoteCurrency":"USD","rate":1.0842,"effectiveAt":"2026-03-11T16:02:08.000Z","updatedAt":"2026-03-11T16:02:08.000Z","feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3"}],"totalCount":1,"offset":0,"limit":25}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0116","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Exchange rate not found","data":{"id":"DALP-0116","why":"No active FX feed covers the requested currency pair on the current chain, or the feed exists but has not yet recorded an observed rate.","fix":"Check the supported currencies list to confirm the pair is available. If the pair was recently added, retry after the feed publishes its first observation.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12247"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"No feed on this network prices the currency","data":{"id":"DALP-12247","why":"The exchange-rate graph for the selected network has no feed that quotes the requested currency.","fix":"Use a currency from the supported-currencies list, or add an exchange-rate feed for the currency on this network.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one offset page of configured currency pairs. Filter with `baseCurrencies` and `quoteCurrencies`. `limit` defaults to 25 and accepts at most 200. A pair whose feed has not published a value still appears, with `rate` set to null. The call is safe to repeat.","summary":"List exchange rates","x-dalp-auth":"session-or-api-key"}},"/api/v1/exchange-rates/{baseCurrency}/{quoteCurrency}/history":{"get":{"tags":["Exchange rates"],"operationId":"v1/exchangeRates/history","parameters":[{"name":"baseCurrency","in":"path","schema":{"type":"string","pattern":"^[A-Z]{3}$"},"required":true},{"name":"quoteCurrency","in":"path","schema":{"type":"string","pattern":"^[A-Z]{3}$"},"required":true},{"name":"startDate","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":false},{"name":"endDate","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":1000,"description":"Maximum observations to return. Defaults to 100 and accepts at most 1000."},"required":false}],"responses":{"200":{"description":"Historical observations for one base and quote pair, newest first within the requested window. The array is empty when the pair has no observations in that window. The call is safe to repeat.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeRatesHistoryOutput"},"examples":{"example-1":{"value":[{"baseCurrency":"EUR","quoteCurrency":"USD","rate":1.0842,"effectiveAt":"2026-03-11T16:02:08.000Z"}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0116","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Exchange rate not found","data":{"id":"DALP-0116","why":"No active FX feed covers the requested currency pair on the current chain, or the feed exists but has not yet recorded an observed rate.","fix":"Check the supported currencies list to confirm the pair is available. If the pair was recently added, retry after the feed publishes its first observation.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12247"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"No feed on this network prices the currency","data":{"id":"DALP-12247","why":"The exchange-rate graph for the selected network has no feed that quotes the requested currency.","fix":"Use a currency from the supported-currencies list, or add an exchange-rate feed for the currency on this network.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns historical observations for the path-bound ISO 4217 pair. Optional `startDate` and `endDate` bound the window. `limit` defaults to 100 and accepts at most 1000. The array is empty when the window has no observations. The call is safe to repeat.","summary":"List exchange-rate history","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/capabilities":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/capabilities","parameters":[],"responses":{"200":{"description":"Installation state of the feed directory, issuer-signed factory, and adapter factory on the selected chain. `address` is null when that component is not installed. The call is safe to repeat.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedsCapabilitiesOutput"},"examples":{"example-1":{"value":{"feedsDirectory":{"installed":true,"address":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"issuerSignedScalarFeedFactory":{"installed":true,"address":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","typeId":"issuer-signed-scalar-feed"},"scalarFeedAggregatorAdapterFactory":{"installed":true,"address":"0xe7f1725E7734CE168F8367e1Bb143E90bb3F0512","typeId":"scalar-feed-aggregator-adapter"},"priceResolver":{"installed":true,"address":"0xe7f1725E7734CE168F8367e1Bb143E90bb3F0512","typeId":"price-resolver"},"supportedFeedKinds":["SCALAR"],"chainId":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns whether the feed directory, issuer-signed factory, and adapter factory are installed on the selected chain, plus the feed kinds that chain accepts. Addresses are null when a component is not installed. The call is safe to repeat.","summary":"Read feed capabilities","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["id","feedAddress","subject","topicId","decimals","isActive","registeredAt"],"description":"Sort field. Defaults to `id`."},"required":false},{"name":"subject","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false},{"name":"kind","in":"query","schema":{"anyOf":[{"type":"string","enum":["SCALAR"]}],"description":"On-chain feed kind. `SCALAR` is a single numeric observation series."},"required":false},{"name":"isActive","in":"query","schema":{"type":"boolean","description":"Limit the page to active or inactive directory mappings."},"required":false},{"name":"tokenAddress","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false},{"name":"first","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":1000,"description":"Maximum feeds to return. Accepts at most 1000."},"required":false},{"name":"skip","in":"query","schema":{"type":"integer","minimum":0,"description":"Number of matching feeds to skip before this page."},"required":false}],"responses":{"200":{"description":"Offset page of registered feeds. `totalCount` is the full match count. Repeat the call with a new `skip` to walk the remaining rows.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedListOutput"},"examples":{"example-1":{"value":{"items":[{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3","feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","subject":"0x0000000000000000000000000000000000000000","topicId":"1","kind":"SCALAR","schemaHash":"0x5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8","decimals":8,"scope":"global","factory":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","typeId":"issuer-signed-scalar-feed"},"creator":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"adapterAddress":null,"isActive":true,"registeredAt":"2026-03-04T09:12:41.000Z","latestValue":{"roundId":42,"answer":"108420000","observedAt":"2026-03-11T16:02:08.000Z","updatedAt":"2026-03-11T16:02:08.000Z","issuer":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","signer":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"description":"EUR / USD"}],"totalCount":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one offset page of registered feeds. Filter by subject, kind, activity, or token. Sort defaults to `id` ascending. `latestValue` is null until the first observation is indexed. The call is safe to repeat.","summary":"List feeds","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/resolve":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/resolve","parameters":[{"name":"subject","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"topicName","in":"query","schema":{"type":"string","minLength":1,"description":"Topic name such as `price`. Send this, `topicId`, or both."},"required":false},{"name":"topicId","in":"query","schema":{"type":"string","pattern":"^\\d+$","description":"Numeric topic identifier as a decimal string. Send this, `topicName`, or both."},"required":false}],"responses":{"200":{"description":"Registration for one subject and topic. `exists` is false and the remaining fields are null when the directory has no mapping. Indexed fields appear only after the indexer has processed the registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedResolveOutput"},"examples":{"example-1":{"value":{"exists":true,"feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","kind":"SCALAR","schemaHash":"0x5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8","adapterAddress":null,"indexed":{"decimals":8,"latestValue":{"roundId":42,"answer":"108420000","observedAt":"2026-03-11T16:02:08.000Z","updatedAt":"2026-03-11T16:02:08.000Z","issuer":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","signer":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"registeredAt":"2026-03-04T09:12:41.000Z"}}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-12242","DALP-12384","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0125","DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Feed with address {feedAddress} not found","data":{"id":"DALP-0125","why":"The platform could not find a feed at the given address in the system index. The feed may not have been registered, or the indexer has not yet processed its registration event.","fix":"Confirm the feed address is correct and the feed has been registered in the system. If the feed was recently registered, wait for the indexer to catch up and retry.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12241","DALP-9086","DALP-9433","DALP-9518"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0660","DALP-12038","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the directory mapping for one subject and topic. Send `topicName` or `topicId`. `exists` is false when the directory has no mapping. Indexed fields appear only after the indexer has processed the registration. The call is safe to repeat.","summary":"Resolve a feed","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/{feedAddress}":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/read","parameters":[{"name":"feedAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"One registered feed and the latest indexed observation when one exists. `subject` is the zero address for a global FX feed. `latestValue` is null until the first submission is indexed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedReadOutput"},"examples":{"example-1":{"value":{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3","feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","subject":"0x0000000000000000000000000000000000000000","topicId":"1","kind":"SCALAR","schemaHash":"0x5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8","decimals":8,"scope":"global","factory":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","typeId":"issuer-signed-scalar-feed"},"creator":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"adapterAddress":null,"isActive":true,"registeredAt":"2026-03-04T09:12:41.000Z","latestValue":{"roundId":42,"answer":"108420000","observedAt":"2026-03-11T16:02:08.000Z","updatedAt":"2026-03-11T16:02:08.000Z","issuer":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","signer":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"description":"EUR / USD"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0125","DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Feed with address {feedAddress} not found","data":{"id":"DALP-0125","why":"The platform could not find a feed at the given address in the system index. The feed may not have been registered, or the indexer has not yet processed its registration event.","fix":"Confirm the feed address is correct and the feed has been registered in the system. If the feed was recently registered, wait for the indexer to catch up and retry.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the registered feed at `feedAddress` and its latest indexed observation. The route answers 404 when that address is not registered on the selected system and chain. The call is safe to repeat.","summary":"Read a feed","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/register-external":{"post":{"tags":["Price feeds"],"operationId":"v1/system/feeds/registerExternal","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"201":{"description":"Accepted external registration. `transactionHash` is the write that stored the mapping.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedRegisterExternalOutput"},"examples":{"example-1":{"value":{"subject":"0x0000000000000000000000000000000000000000","topicId":"1","feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","kind":"SCALAR","transactionHash":"0x3a1b2c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f809"}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Comma-separated transaction hashes produced by the operation."},"required":false},"location":{"schema":{"type":"string","description":"Relative URL for the accepted operation or resulting resource."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Request preferences honored while processing the mutation."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-12242","DALP-12384","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0125","DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Feed with address {feedAddress} not found","data":{"id":"DALP-0125","why":"The platform could not find a feed at the given address in the system index. The feed may not have been registered, or the indexer has not yet processed its registration event.","fix":"Confirm the feed address is correct and the feed has been registered in the system. If the feed was recently registered, wait for the indexer to catch up and retry.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12241","DALP-9086","DALP-9433","DALP-9518"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0660","DALP-12038","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Queues an on-chain write that registers an already deployed compatible feed for a subject and topic. Send `topicName` or `topicId`. Repeat the call only with the same idempotency key until the write settles.","summary":"Register an external feed","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_1"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicName":{"type":"string","minLength":1,"description":"Topic name such as `price`. Send this, `topicId`, or both."},"topicId":{"type":"string","pattern":"^\\d+$","description":"Numeric topic identifier as a decimal string. Send this, `topicName`, or both."},"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"kind":{"$ref":"#/components/schemas/FeedKind"},"description":{"type":"string"}},"required":["subject","feedAddress","kind","description"],"additionalProperties":false,"description":"Existing compatible feed to register for a subject and topic. Send `topicName` or `topicId`. The call queues an on-chain write, so repeat it only with the same idempotency key."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/replace":{"put":{"tags":["Price feeds"],"operationId":"v1/system/feeds/replace","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accepted replacement. `oldFeedAddress` is the mapping the write retires.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedReplaceOutput"},"examples":{"example-1":{"value":{"subject":"0x0000000000000000000000000000000000000000","topicId":"1","oldFeedAddress":"0xe7f1725E7734CE168F8367e1Bb143E90bb3F0512","newFeedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","transactionHash":"0x3a1b2c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f809"}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Comma-separated transaction hashes produced by the operation."},"required":false},"location":{"schema":{"type":"string","description":"Relative URL for the accepted operation or resulting resource."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Request preferences honored while processing the mutation."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-12242","DALP-12384","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0125","DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Feed with address {feedAddress} not found","data":{"id":"DALP-0125","why":"The platform could not find a feed at the given address in the system index. The feed may not have been registered, or the indexer has not yet processed its registration event.","fix":"Confirm the feed address is correct and the feed has been registered in the system. If the feed was recently registered, wait for the indexer to catch up and retry.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12241","DALP-9086","DALP-9433","DALP-9518"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0660","DALP-12038","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Queues an on-chain write that replaces the feed address held for a subject and topic. The previous address is retired once the write settles. Repeat the call only with the same idempotency key.","summary":"Replace a feed registration","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_1"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicName":{"type":"string","minLength":1,"description":"Topic name such as `price`. Send this, `topicId`, or both."},"topicId":{"type":"string","pattern":"^\\d+$","description":"Numeric topic identifier as a decimal string. Send this, `topicName`, or both."},"newFeedAddress":{"$ref":"#/components/schemas/EvmAddress"},"kind":{"$ref":"#/components/schemas/FeedKind"},"description":{"type":"string"}},"required":["subject","newFeedAddress","kind","description"],"additionalProperties":false,"description":"Replacement feed address for an existing subject and topic mapping. The previous address is retired once the queued write settles."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/remove":{"delete":{"tags":["Price feeds"],"operationId":"v1/system/feeds/remove","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accepted removal. The mapping is gone after the queued write settles.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedRemoveOutput"},"examples":{"example-1":{"value":{"subject":"0x0000000000000000000000000000000000000000","topicId":"1","transactionHash":"0x3a1b2c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f809"}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Comma-separated transaction hashes produced by the operation."},"required":false},"location":{"schema":{"type":"string","description":"Relative URL for the accepted operation or resulting resource."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Request preferences honored while processing the mutation."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-12242","DALP-12384","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0125","DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Feed with address {feedAddress} not found","data":{"id":"DALP-0125","why":"The platform could not find a feed at the given address in the system index. The feed may not have been registered, or the indexer has not yet processed its registration event.","fix":"Confirm the feed address is correct and the feed has been registered in the system. If the feed was recently registered, wait for the indexer to catch up and retry.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12241","DALP-9086","DALP-9433","DALP-9518"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0660","DALP-12038","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Queues an on-chain write that removes the directory mapping for a subject and topic. The feed contract itself stays deployed. Repeat the call only with the same idempotency key.","summary":"Remove a feed registration","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_1"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicName":{"type":"string","minLength":1,"description":"Topic name such as `price`. Send this, `topicId`, or both."},"topicId":{"type":"string","pattern":"^\\d+$","description":"Numeric topic identifier as a decimal string. Send this, `topicName`, or both."}},"required":["subject"],"additionalProperties":false,"description":"Subject and topic whose directory mapping should be removed. The feed contract itself stays deployed."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/{feedAddress}/latest":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/latest","parameters":[{"name":"feedAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Latest on-chain round for the feed. `answer` is the integer observation, `formattedAnswer` applies `decimals`, and `updatedAt` is the UTC time of that round.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedLatestOutput"},"examples":{"example-1":{"value":{"feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","roundId":"42","answer":"108420000","decimals":8,"formattedAnswer":"1.0842","startedAt":"2026-03-11T16:02:08.000Z","updatedAt":"2026-03-11T16:02:08.000Z","answeredInRound":"42","description":"EUR / USD","version":"1"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9519"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Contract {feedAddress} does not expose the feed interface","data":{"id":"DALP-9519","why":"The contract at the given address did not answer the required feed interface on the selected chain.","fix":"Verify the feed address and confirm the contract is deployed on the selected chain.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the latest on-chain round for `feedAddress`. `answer` is the integer observation and `formattedAnswer` applies the feed decimals. The call is a live chain read, so repeat it when you need a newer round.","summary":"Read the latest feed round","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/{feedAddress}/round/{roundId}":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/round","parameters":[{"name":"feedAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"roundId","in":"path","schema":{"type":"string","pattern":"^\\d+$","description":"Historical round number as a non-negative decimal string."},"required":true}],"responses":{"200":{"description":"One historical round. `answer` is the integer observation stored for that `roundId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedRoundOutput"},"examples":{"example-1":{"value":{"roundId":"42","answer":"108420000","startedAt":"2026-03-11T16:02:08.000Z","updatedAt":"2026-03-11T16:02:08.000Z","answeredInRound":"42"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-0131","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9519"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Contract {feedAddress} does not expose the feed interface","data":{"id":"DALP-9519","why":"The contract at the given address did not answer the required feed interface on the selected chain.","fix":"Verify the feed address and confirm the contract is deployed on the selected chain.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the historical round named by `roundId` for `feedAddress`. The route answers 404 when that round was never written or the feed history mode no longer retains it. The call is safe to repeat.","summary":"Read a feed round","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/{feedAddress}/staleness":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/staleness","parameters":[{"name":"feedAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"maxAgeSeconds","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"integer","minimum":0,"exclusiveMinimum":0}],"description":"Maximum acceptable observation age in seconds. Must be a positive integer."},"required":true}],"responses":{"200":{"description":"Whether the latest observation is older than the caller-supplied `maxAgeSeconds`. `isStale` is true when `ageSeconds` is greater than that maximum.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedStalenessOutput"},"examples":{"example-1":{"value":{"feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","latestUpdatedAt":"2026-03-11T16:02:08.000Z","currentTimestamp":"2026-03-11T16:07:08.000Z","ageSeconds":300,"maxAgeSeconds":900,"isStale":false,"roundId":"42","answer":"108420000"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0125","DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Feed with address {feedAddress} not found","data":{"id":"DALP-0125","why":"The platform could not find a feed at the given address in the system index. The feed may not have been registered, or the indexer has not yet processed its registration event.","fix":"Confirm the feed address is correct and the feed has been registered in the system. If the feed was recently registered, wait for the indexer to catch up and retry.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9519"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Contract {feedAddress} does not expose the feed interface","data":{"id":"DALP-9519","why":"The contract at the given address did not answer the required feed interface on the selected chain.","fix":"Verify the feed address and confirm the contract is deployed on the selected chain.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Compares the age of the latest observation against the caller-supplied `maxAgeSeconds`. `isStale` is true when that age is greater than the maximum. `maxAgeSeconds` must be a positive integer. The call is a point-in-time read.","summary":"Evaluate feed staleness","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/{feedAddress}/config":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/config","parameters":[{"name":"feedAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Immutable issuer-signed feed settings. These values are fixed at creation, so the same request always returns the same configuration after the feed exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedConfigOutput"},"examples":{"example-1":{"value":{"feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","subject":"0x0000000000000000000000000000000000000000","topicId":"1","expectedSchemaHash":"0x5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8","decimals":8,"description":"EUR / USD","historyMode":"BOUNDED","historySize":32,"requirePositive":true,"driftAllowance":10,"domainSeparator":"0x7f8e9d0c1b2a39485766554433221100ffeeddccbbaa99887766554433221100","trustedIssuersRegistry":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","topicSchemeRegistry":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0125","DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Feed with address {feedAddress} not found","data":{"id":"DALP-0125","why":"The platform could not find a feed at the given address in the system index. The feed may not have been registered, or the indexer has not yet processed its registration event.","fix":"Confirm the feed address is correct and the feed has been registered in the system. If the feed was recently registered, wait for the indexer to catch up and retry.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the immutable issuer-signed settings for `feedAddress`: decimals, history mode, drift allowance, and registry addresses. These values are fixed at creation, so the same request always returns the same configuration after the feed exists.","summary":"Read feed configuration","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/{feedAddress}/nonce/{issuerIdentity}":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/nonce","parameters":[{"name":"feedAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"issuerIdentity","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Current and next issuer nonce for this feed. Use `nextNonce` when you assemble the following signed observation. The pair is a point-in-time read, so fetch it again immediately before you sign.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedNonceOutput"},"examples":{"example-1":{"value":{"feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","issuerIdentity":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","currentNonce":"41","nextNonce":"42"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9519"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Contract {feedAddress} does not expose the feed interface","data":{"id":"DALP-9519","why":"The contract at the given address did not answer the required feed interface on the selected chain.","fix":"Verify the feed address and confirm the contract is deployed on the selected chain.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the current and next issuer nonce for `issuerIdentity` on `feedAddress`. Use `nextNonce` when you assemble the following signed observation. Fetch this immediately before you sign, because another submission can consume the nonce.","summary":"Read an issuer nonce","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/{feedAddress}/submit":{"post":{"tags":["Price feeds"],"operationId":"v1/system/feeds/submit","parameters":[{"name":"feedAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accepted observation. `nonce` is the issuer nonce consumed by this write. `transactionHash` is empty only when the write has not yet produced a hash.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedSubmitOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x3a1b2c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f809","feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","value":"108420000","nonce":"42"}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Comma-separated transaction hashes produced by the operation."},"required":false},"location":{"schema":{"type":"string","description":"Relative URL for the accepted operation or resulting resource."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Request preferences honored while processing the mutation."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0639","DALP-12033","DALP-12036","DALP-12136","DALP-12245","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-12242","DALP-12243","DALP-12384","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9519"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Contract {feedAddress} does not expose the feed interface","data":{"id":"DALP-9519","why":"The contract at the given address did not answer the required feed interface on the selected chain.","fix":"Verify the feed address and confirm the contract is deployed on the selected chain.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0660","DALP-12038","DALP-12244","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Signs and queues one integer observation from the caller's issuer identity. `value` is the unscaled integer and `observedAt` is a Unix timestamp in seconds. Repeat the call only with the same idempotency key until the write settles.","summary":"Submit a feed observation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedSubmitBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/issuer-signed/create":{"post":{"tags":["Price feeds"],"operationId":"v1/system/feeds/issuerSigned/create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"201":{"description":"Accepted issuer-signed feed. `feedAddress` is the new contract, and `historyMode` is the mode it is created with, always `LATEST_ONLY`. Poll the transaction until it settles.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuerSignedCreateOutput"},"examples":{"example-1":{"value":{"feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","subject":"0x0000000000000000000000000000000000000000","topicId":"1","decimals":8,"historyMode":"BOUNDED","transactionHash":"0x3a1b2c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f809"}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Comma-separated transaction hashes produced by the operation."},"required":false},"location":{"schema":{"type":"string","description":"Relative URL for the accepted operation or resulting resource."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Request preferences honored while processing the mutation."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-12242","DALP-12384","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12241","DALP-9086","DALP-9433","DALP-9518"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0660","DALP-12038","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Queues an on-chain write that creates an issuer-signed scalar feed and registers it for a subject and topic. Send `topicName` or `topicId`. `decimals` is 0 to 18. Repeat the call only with the same idempotency key until the write settles.","summary":"Create an issuer-signed feed","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_1"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicName":{"type":"string","minLength":1,"description":"Topic name such as `price`. Send this, `topicId`, or both."},"topicId":{"type":"string","pattern":"^\\d+$","description":"Numeric topic identifier as a decimal string. Send this, `topicName`, or both."},"decimals":{"type":"integer","minimum":0,"maximum":18,"description":"Decimal places the feed uses to scale observations. Accepts 0 to 18."},"description":{"type":"string","minLength":1,"description":"On-chain description following the `<BASE> / <QUOTE>` convention."},"historyMode":{"$ref":"#/components/schemas/HistoryMode"},"historySize":{"type":"integer","minimum":0,"description":"Accepted and not applied. The feed keeps one round."},"requirePositive":{"type":"boolean","description":"Accepted and not applied. The feed always rejects non-positive observations."},"driftAllowance":{"type":"integer","minimum":0,"description":"Accepted and not applied. The feed is created with no drift allowance."}},"required":["subject","decimals","description","historyMode","historySize","requirePositive","driftAllowance"],"additionalProperties":false,"description":"Issuer-signed scalar feed to create and register. Send `topicName` or `topicId`. `decimals` is 0 to 18. The feed keeps only its latest round and accepts only positive values, so it cannot carry a negative rate or delta; `historyMode`, `historySize`, `requirePositive` and `driftAllowance` are accepted and not applied. The call queues an on-chain write."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/issuer-signed":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/issuerSigned/list","parameters":[{"name":"first","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":1000,"description":"Maximum rows to return. Accepts at most 1000."},"required":false},{"name":"skip","in":"query","schema":{"type":"integer","minimum":0,"description":"Number of matching rows to skip before this page."},"required":false}],"responses":{"200":{"description":"Offset page of feeds created by the issuer-signed factory. `totalCount` is the full match count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuerSignedListOutput"},"examples":{"example-1":{"value":{"items":[{"feedAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","subject":"0x0000000000000000000000000000000000000000","topicId":"1","creator":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}],"totalCount":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one offset page of feeds created by the issuer-signed factory. The call is safe to repeat.","summary":"List issuer-signed feeds","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/adapters/create":{"post":{"tags":["Price feeds"],"operationId":"v1/system/feeds/adapters/create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"201":{"description":"Accepted adapter. `adapterAddress` is the stable contract callers should read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdapterCreateOutput"},"examples":{"example-1":{"value":{"adapterAddress":"0xe7f1725E7734CE168F8367e1Bb143E90bb3F0512","subject":"0x0000000000000000000000000000000000000000","topicId":"1","transactionHash":"0x3a1b2c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f809"}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Comma-separated transaction hashes produced by the operation."},"required":false},"location":{"schema":{"type":"string","description":"Relative URL for the accepted operation or resulting resource."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Request preferences honored while processing the mutation."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-12242","DALP-12384","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12241","DALP-9086","DALP-9433","DALP-9518"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0660","DALP-12038","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Queues an on-chain write that creates a stable adapter address for a subject and topic. The adapter keeps the same address when the backing feed is replaced. Repeat the call only with the same idempotency key.","summary":"Create a feed adapter","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_1"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicName":{"type":"string","minLength":1,"description":"Topic name such as `price`. Send this, `topicId`, or both."},"topicId":{"type":"string","pattern":"^\\d+$","description":"Numeric topic identifier as a decimal string. Send this, `topicName`, or both."}},"required":["subject"],"additionalProperties":false,"description":"Subject and topic that receive a stable adapter address. Send `topicName` or `topicId`. The adapter keeps the same address when the backing feed is replaced."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/feeds/adapters":{"get":{"tags":["Price feeds"],"operationId":"v1/system/feeds/adapters/list","parameters":[{"name":"first","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":1000,"description":"Maximum rows to return. Accepts at most 1000."},"required":false},{"name":"skip","in":"query","schema":{"type":"integer","minimum":0,"description":"Number of matching rows to skip before this page."},"required":false}],"responses":{"200":{"description":"Offset page of adapters created by the scalar-feed adapter factory. `totalCount` is the full match count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdapterListOutput"},"examples":{"example-1":{"value":{"items":[{"adapterAddress":"0xe7f1725E7734CE168F8367e1Bb143E90bb3F0512","subject":"0x0000000000000000000000000000000000000000","topicId":"1"}],"totalCount":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0127","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up","data":{"id":"DALP-0127","why":"The platform could not find a `FeedsDirectory` address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event.","fix":"Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one offset page of adapters created by the scalar-feed adapter factory. The call is safe to repeat.","summary":"List feed adapters","x-dalp-auth":"session-or-api-key"}},"/api/v1/search":{"get":{"tags":["Search"],"operationId":"v1/search/global","parameters":[{"name":"query","in":"query","schema":{"type":"string"},"required":true},{"name":"limits","in":"query","schema":{"type":"object","properties":{"contacts":{"type":"integer"},"tokens":{"type":"integer"},"users":{"type":"integer"},"participants":{"type":"integer"},"systemContracts":{"type":"integer"}},"additionalProperties":false,"description":"Optional per-section result limits. Each section accepts 1 to 50 hits."},"required":false,"style":"deepObject","explode":true}],"responses":{"200":{"description":"Permission-aware search hits grouped by resource type. The platform leaves out a section when it has no matches. The call does not change state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalSearchOutput"},"examples":{"example-1":{"value":{"sections":[{"type":"contacts","items":[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"users","items":[{"id":"usr_northwind_ops","participantId":"participant-northwind-ops","name":"Northwind Operations","role":"admin"}]},{"type":"systemContracts","items":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","name":"Token Factory","contractType":"TokenFactory"}]}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns permission-aware hits for a search term of 2 to 120 characters. The platform leaves out a section when it has no matches. Optional `limits` cap a section at 1 to 50 hits. The call does not change state.","summary":"Search contacts, tokens, users, and system contracts","x-dalp-auth":"api-key"}},"/api/v1/admin/organizations":{"get":{"tags":["Platform administration"],"operationId":"v1/admin/organizations/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string"},"required":false},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":200},"required":false},{"name":"filters","in":"query","schema":{"type":"object","properties":{"search":{"anyOf":[{"type":"string","description":"Search query for organization name or slug"},{"type":"null"}]}},"additionalProperties":false},"required":false,"style":"deepObject","explode":true}],"responses":{"200":{"description":"One page of organizations. `total` counts every matching organization, not only the rows on this page. `offset` is the number of rows skipped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationListOutput"},"examples":{"example-1":{"value":{"items":[{"id":"org_northwind_coffee","name":"Northwind Coffee","slug":"northwind-coffee","logo":null,"createdAt":"2026-03-04T09:12:41.000Z","archivedAt":null,"ownerCount":1,"ownerEmails":["owner@northwind.example"],"memberCount":3,"assetCount":2}],"total":1,"limit":25,"offset":0}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one page of every organization on the platform, including archived rows. This is a platform-administrator read. Authenticate with an API key. Offset and limit default to 0 and 25, with a maximum of 200. Repeating the same query is safe and returns the current stored set.","summary":"List organizations","x-dalp-auth":"api-key"}},"/api/v1/settings/{key}":{"get":{"tags":["Platform settings"],"operationId":"v1/settings/read","parameters":[{"name":"key","in":"path","schema":{"type":"string","enum":["BASE_CURRENCY","SYSTEM_ADDRESS","AA_ENABLED","AA_WARN_DAYS","AA_CRITICAL_DAYS","TARGET_CURRENCIES","MULTI_NETWORK_ENABLED"],"description":"Predefined setting name to read. One of BASE_CURRENCY, SYSTEM_ADDRESS, AA_ENABLED, AA_WARN_DAYS, AA_CRITICAL_DAYS, TARGET_CURRENCIES, or MULTI_NETWORK_ENABLED."},"required":true}],"responses":{"200":{"description":"The stored value for the requested key in the active organization, or null when that key has no row.","content":{"application/json":{"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The stored value for the requested key in the active organization, or null when that key has no row."},"examples":{"example-1":{"value":"EUR"},"example-2":{"value":null}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the stored value for one predefined key in the active organization. The key must be one of BASE_CURRENCY, SYSTEM_ADDRESS, AA_ENABLED, AA_WARN_DAYS, AA_CRITICAL_DAYS, TARGET_CURRENCIES, or MULTI_NETWORK_ENABLED. A missing key returns null rather than 404. The call is a read and is safe to retry.","summary":"Read a setting","x-dalp-auth":"api-key"},"delete":{"tags":["Platform settings"],"operationId":"v1/settings/delete","parameters":[{"name":"key","in":"path","schema":{"type":"string","enum":["BASE_CURRENCY","SYSTEM_ADDRESS","AA_ENABLED","AA_WARN_DAYS","AA_CRITICAL_DAYS","TARGET_CURRENCIES","MULTI_NETWORK_ENABLED"],"description":"Predefined setting name to delete. MULTI_NETWORK_ENABLED cannot be deleted while the organization still has added networks."},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Whether the platform removed the setting row.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false,"description":"Whether the platform removed the setting row."},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9167","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9169","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes one predefined key from the active organization. A missing key returns 404. MULTI_NETWORK_ENABLED cannot be deleted while the organization still has added networks. The delete is not queued. Repeating the call after a successful delete returns 404.","summary":"Delete a setting","x-dalp-auth":"api-key"}},"/api/v1/settings":{"get":{"tags":["Platform settings"],"operationId":"v1/settings/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string"},"required":false},{"name":"offset","in":"query","schema":{"type":"integer"},"required":false},{"name":"limit","in":"query","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"Every stored setting for the active organization, in the requested order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsListOutput"},"examples":{"example-1":{"value":[{"key":"BASE_CURRENCY","value":"EUR","lastUpdated":"2026-04-12T09:30:00.000Z"}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every stored setting for the active organization, ordered by key unless the request sends another orderBy. Offset and limit default to 0 and 25, with a maximum of 200. The call is a read and is safe to retry.","summary":"List settings","x-dalp-auth":"api-key"},"post":{"tags":["Platform settings"],"operationId":"v1/settings/upsert","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The stored value after the write, in the same encoding the request sent.","content":{"application/json":{"schema":{"type":"string","description":"The stored value after the write, in the same encoding the request sent."},"examples":{"example-1":{"value":"EUR"}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0617","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Stores one predefined key for the active organization and returns the stored value. TARGET_CURRENCIES is a JSON array of ISO 4217 codes and must keep every currency already stored. AA_ENABLED and MULTI_NETWORK_ENABLED are the strings true or false. The write is not idempotent when the value changes a second time. Repeating an identical body stores the same value again.","summary":"Create or replace a setting","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsUpsert"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/settings/theme":{"get":{"tags":["Platform settings"],"operationId":"v1/settings/theme/get","parameters":[],"responses":{"200":{"description":"Effective theme for the request: organization overrides when authentication selects an organization, otherwise the global or default theme. The object includes logos, fonts, CSS tokens, and metadata.version.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationThemeConfig"},"examples":{"example-1":{"value":{"logo":{"lightUrl":"/logos/northwind-logo-h-lm.svg","darkUrl":"/logos/northwind-logo-h-dm.svg","lightIconUrl":"/logos/settlemint-logo-i-lm.svg","darkIconUrl":"/logos/settlemint-logo-i-dm.svg","alt":"Northwind Coffee"},"images":{"backgroundLightUrl":"/backgrounds/background-lm.svg","backgroundDarkUrl":"/backgrounds/background-dm.svg","faviconUrl":"/favicon.ico","appleTouchIconUrl":"/apple-touch-icon.png","favicon96Url":"/favicon-96x96.png","faviconSvgUrl":"/favicon.svg"},"fonts":{"sans":{"family":"Figtree Variable","source":"fontsource","preload":true},"mono":{"family":"Red Hat Mono Variable","source":"fontsource","preload":true}},"cssVars":{"light":{"sm-text":"oklch(0.2264 0 87)","sm-text-strong":"oklch(0.205 0 0)","sm-text-default":"oklch(0.269 0 0)","sm-text-subtle":"oklch(0.442 0 0)","sm-text-disabled":"oklch(0.553 0 0)","sm-text-contrast":"oklch(1 0 87)","sm-accent":"oklch(0.55 0.2028 263.15)","sm-accent-hover":"oklch(0.55 0.2028 263.15 / 0.2)","sm-background-darkest":"oklch(0.9359 0.0275 265.45)","sm-background-lightest":"oklch(0.967 0.014 268.49)","sm-background-gradient-start":"oklch(0.9886 0.0026 286.35)","sm-background-gradient-end":"oklch(0.9691 0.0103 261.79)","sm-state-success":"oklch(0.2264 0 87)","sm-state-success-background":"oklch(0.812 0.1064 153.89)","sm-state-success-fg-deep":"hsl(140, 100%, 27%)","sm-state-warning":"oklch(0.2264 0 87)","sm-state-warning-background":"oklch(0.8354 0.1274 72.2)","sm-state-warning-fg-deep":"hsl(35, 92%, 33%)","sm-state-info":"oklch(0.2264 0 87)","sm-state-info-background":"oklch(0.6396 0.145 248.18)","sm-state-info-fg-deep":"hsl(210, 92%, 33%)","sm-state-error":"oklch(0.2264 0 87)","sm-state-error-background":"oklch(0.7044 0.1872 23.19)","sm-graphics-primary":"oklch(0.7675 0.0982 182.83)","sm-graphics-secondary":"oklch(0.7284 0.1133 210.64)","sm-graphics-tertiary":"oklch(0.6396 0.145 248.18)","sm-graphics-quaternary":"oklch(0.6296 0.2209 300.47)","sm-colored-shadow":"oklch(0.55 0.2028 263.15 / 0.12)","sm-inset-shadow":"rgba(0, 0, 0, 0.21)","sm-muted":"oklch(0.2264 0 87 / 32%)","sm-border":"oklch(0.2264 0 87 / 12%)","sm-border-subtle":"oklch(0.922 0 0)","sm-sidebar-gradient-start":"oklch(0.54 0.12 210.64)","sm-sidebar-gradient-mid":"oklch(0.56 0.15 248.18)","sm-sidebar-gradient-end":"oklch(0.55 0.1 182.83)","radius":"0.625rem"},"dark":{"sm-text":"oklch(1 0 87)","sm-text-strong":"oklch(0.985 0 0)","sm-text-default":"oklch(0.922 0 0)","sm-text-subtle":"oklch(0.72 0 0)","sm-text-disabled":"oklch(0.442 0 0)","sm-text-contrast":"oklch(0.2264 0 87)","sm-accent":"oklch(0.72 0.14 263.65)","sm-accent-hover":"oklch(0.72 0.14 263.65 / 0.2)","sm-background-darkest":"oklch(0.2264 0 0)","sm-background-lightest":"oklch(0.2809 0 0)","sm-background-gradient-start":"oklch(0.3368 0 0)","sm-background-gradient-end":"oklch(0.3092 0 0)","sm-state-success":"oklch(1 0 87)","sm-state-success-background":"oklch(0.812 0.1064 153.89)","sm-state-success-fg-deep":"hsl(140, 80%, 65%)","sm-state-warning":"oklch(1 0 87)","sm-state-warning-background":"oklch(0.8354 0.1274 72.2)","sm-state-warning-fg-deep":"hsl(35, 80%, 65%)","sm-state-info":"oklch(1 0 87)","sm-state-info-background":"oklch(0.6396 0.145 248.18)","sm-state-info-fg-deep":"hsl(210, 80%, 65%)","sm-state-error":"oklch(0.2264 0 87)","sm-state-error-background":"oklch(0.7044 0.1872 23.19)","sm-graphics-primary":"oklch(0.7675 0.0982 182.83)","sm-graphics-secondary":"oklch(0.7284 0.1133 210.64)","sm-graphics-tertiary":"oklch(0.6396 0.145 248.18)","sm-graphics-quaternary":"oklch(0.6296 0.2209 300.47)","sm-colored-shadow":"oklch(0.2264 0 0)","sm-inset-shadow":"rgba(0, 0, 0, 0.21)","sm-muted":"oklch(1 0 87 / 32%)","sm-border":"oklch(1 0 87 / 12%)","sm-border-subtle":"oklch(0.269 0 0)","sm-sidebar-gradient-start":"oklch(0.54 0.12 210.64)","sm-sidebar-gradient-mid":"oklch(0.56 0.15 248.18)","sm-sidebar-gradient-end":"oklch(0.55 0.1 182.83)","radius":"0.625rem"}},"metadata":{"version":4,"updatedBy":"user_northwind_owner","updatedAt":"2026-04-12T09:30:00.000Z"}}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the effective theme for the request, including logos, fonts, and CSS tokens. An authenticated request receives its organization theme. A pre-sign-in request receives the global or default theme, so clients can render branded authentication pages. The call is safe to retry and does not require a chain header.","summary":"Get the organization theme","x-dalp-auth":"optional"},"post":{"tags":["Platform settings"],"operationId":"v1/settings/theme/update","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The stored theme after the write. `success` is true when the platform persisted the configuration. Send `theme.metadata.version` on the next write.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeUpdateOutput"},"examples":{"example-1":{"value":{"theme":{"logo":{"lightUrl":"/logos/northwind-logo-h-lm.svg","darkUrl":"/logos/northwind-logo-h-dm.svg","lightIconUrl":"/logos/settlemint-logo-i-lm.svg","darkIconUrl":"/logos/settlemint-logo-i-dm.svg","alt":"Northwind Coffee"},"images":{"backgroundLightUrl":"/backgrounds/background-lm.svg","backgroundDarkUrl":"/backgrounds/background-dm.svg","faviconUrl":"/favicon.ico","appleTouchIconUrl":"/apple-touch-icon.png","favicon96Url":"/favicon-96x96.png","faviconSvgUrl":"/favicon.svg"},"fonts":{"sans":{"family":"Figtree Variable","source":"fontsource","preload":true},"mono":{"family":"Red Hat Mono Variable","source":"fontsource","preload":true}},"cssVars":{"light":{"sm-text":"oklch(0.2264 0 87)","sm-text-strong":"oklch(0.205 0 0)","sm-text-default":"oklch(0.269 0 0)","sm-text-subtle":"oklch(0.442 0 0)","sm-text-disabled":"oklch(0.553 0 0)","sm-text-contrast":"oklch(1 0 87)","sm-accent":"oklch(0.55 0.2028 263.15)","sm-accent-hover":"oklch(0.55 0.2028 263.15 / 0.2)","sm-background-darkest":"oklch(0.9359 0.0275 265.45)","sm-background-lightest":"oklch(0.967 0.014 268.49)","sm-background-gradient-start":"oklch(0.9886 0.0026 286.35)","sm-background-gradient-end":"oklch(0.9691 0.0103 261.79)","sm-state-success":"oklch(0.2264 0 87)","sm-state-success-background":"oklch(0.812 0.1064 153.89)","sm-state-success-fg-deep":"hsl(140, 100%, 27%)","sm-state-warning":"oklch(0.2264 0 87)","sm-state-warning-background":"oklch(0.8354 0.1274 72.2)","sm-state-warning-fg-deep":"hsl(35, 92%, 33%)","sm-state-info":"oklch(0.2264 0 87)","sm-state-info-background":"oklch(0.6396 0.145 248.18)","sm-state-info-fg-deep":"hsl(210, 92%, 33%)","sm-state-error":"oklch(0.2264 0 87)","sm-state-error-background":"oklch(0.7044 0.1872 23.19)","sm-graphics-primary":"oklch(0.7675 0.0982 182.83)","sm-graphics-secondary":"oklch(0.7284 0.1133 210.64)","sm-graphics-tertiary":"oklch(0.6396 0.145 248.18)","sm-graphics-quaternary":"oklch(0.6296 0.2209 300.47)","sm-colored-shadow":"oklch(0.55 0.2028 263.15 / 0.12)","sm-inset-shadow":"rgba(0, 0, 0, 0.21)","sm-muted":"oklch(0.2264 0 87 / 32%)","sm-border":"oklch(0.2264 0 87 / 12%)","sm-border-subtle":"oklch(0.922 0 0)","sm-sidebar-gradient-start":"oklch(0.54 0.12 210.64)","sm-sidebar-gradient-mid":"oklch(0.56 0.15 248.18)","sm-sidebar-gradient-end":"oklch(0.55 0.1 182.83)","radius":"0.625rem"},"dark":{"sm-text":"oklch(1 0 87)","sm-text-strong":"oklch(0.985 0 0)","sm-text-default":"oklch(0.922 0 0)","sm-text-subtle":"oklch(0.72 0 0)","sm-text-disabled":"oklch(0.442 0 0)","sm-text-contrast":"oklch(0.2264 0 87)","sm-accent":"oklch(0.72 0.14 263.65)","sm-accent-hover":"oklch(0.72 0.14 263.65 / 0.2)","sm-background-darkest":"oklch(0.2264 0 0)","sm-background-lightest":"oklch(0.2809 0 0)","sm-background-gradient-start":"oklch(0.3368 0 0)","sm-background-gradient-end":"oklch(0.3092 0 0)","sm-state-success":"oklch(1 0 87)","sm-state-success-background":"oklch(0.812 0.1064 153.89)","sm-state-success-fg-deep":"hsl(140, 80%, 65%)","sm-state-warning":"oklch(1 0 87)","sm-state-warning-background":"oklch(0.8354 0.1274 72.2)","sm-state-warning-fg-deep":"hsl(35, 80%, 65%)","sm-state-info":"oklch(1 0 87)","sm-state-info-background":"oklch(0.6396 0.145 248.18)","sm-state-info-fg-deep":"hsl(210, 80%, 65%)","sm-state-error":"oklch(0.2264 0 87)","sm-state-error-background":"oklch(0.7044 0.1872 23.19)","sm-graphics-primary":"oklch(0.7675 0.0982 182.83)","sm-graphics-secondary":"oklch(0.7284 0.1133 210.64)","sm-graphics-tertiary":"oklch(0.6396 0.145 248.18)","sm-graphics-quaternary":"oklch(0.6296 0.2209 300.47)","sm-colored-shadow":"oklch(0.2264 0 0)","sm-inset-shadow":"rgba(0, 0, 0, 0.21)","sm-muted":"oklch(1 0 87 / 32%)","sm-border":"oklch(1 0 87 / 12%)","sm-border-subtle":"oklch(0.269 0 0)","sm-sidebar-gradient-start":"oklch(0.54 0.12 210.64)","sm-sidebar-gradient-mid":"oklch(0.56 0.15 248.18)","sm-sidebar-gradient-end":"oklch(0.55 0.1 182.83)","radius":"0.625rem"}},"metadata":{"version":4,"updatedBy":"user_northwind_owner","updatedAt":"2026-04-12T09:30:00.000Z"}},"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Replaces the stored theme for the authenticated organization. Tokens added after the v1 client baseline may be omitted; the platform fills those from the default theme before it stores the result. A version that does not match the stored theme returns 409. Send the stored metadata.version on the next write. Repeating an identical body with the same version succeeds only while that version is still current.","summary":"Replace the organization theme","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeConfigV1"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/settings/theme/preview":{"post":{"tags":["Platform settings"],"operationId":"v1/settings/theme/preview","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Temporary preview of the stored theme plus the requested diff. `expiresAt` is a Unix timestamp in seconds. The stored theme is unchanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemePreviewOutput"},"examples":{"example-1":{"value":{"theme":{"logo":{"lightUrl":"/logos/northwind-logo-h-lm.svg","darkUrl":"/logos/northwind-logo-h-dm.svg","lightIconUrl":"/logos/settlemint-logo-i-lm.svg","darkIconUrl":"/logos/settlemint-logo-i-dm.svg","alt":"Northwind Coffee"},"images":{"backgroundLightUrl":"/backgrounds/background-lm.svg","backgroundDarkUrl":"/backgrounds/background-dm.svg","faviconUrl":"/favicon.ico","appleTouchIconUrl":"/apple-touch-icon.png","favicon96Url":"/favicon-96x96.png","faviconSvgUrl":"/favicon.svg"},"fonts":{"sans":{"family":"Figtree Variable","source":"fontsource","preload":true},"mono":{"family":"Red Hat Mono Variable","source":"fontsource","preload":true}},"cssVars":{"light":{"sm-text":"oklch(0.2264 0 87)","sm-text-strong":"oklch(0.205 0 0)","sm-text-default":"oklch(0.269 0 0)","sm-text-subtle":"oklch(0.442 0 0)","sm-text-disabled":"oklch(0.553 0 0)","sm-text-contrast":"oklch(1 0 87)","sm-accent":"oklch(0.55 0.2028 263.15)","sm-accent-hover":"oklch(0.55 0.2028 263.15 / 0.2)","sm-background-darkest":"oklch(0.9359 0.0275 265.45)","sm-background-lightest":"oklch(0.967 0.014 268.49)","sm-background-gradient-start":"oklch(0.9886 0.0026 286.35)","sm-background-gradient-end":"oklch(0.9691 0.0103 261.79)","sm-state-success":"oklch(0.2264 0 87)","sm-state-success-background":"oklch(0.812 0.1064 153.89)","sm-state-success-fg-deep":"hsl(140, 100%, 27%)","sm-state-warning":"oklch(0.2264 0 87)","sm-state-warning-background":"oklch(0.8354 0.1274 72.2)","sm-state-warning-fg-deep":"hsl(35, 92%, 33%)","sm-state-info":"oklch(0.2264 0 87)","sm-state-info-background":"oklch(0.6396 0.145 248.18)","sm-state-info-fg-deep":"hsl(210, 92%, 33%)","sm-state-error":"oklch(0.2264 0 87)","sm-state-error-background":"oklch(0.7044 0.1872 23.19)","sm-graphics-primary":"oklch(0.7675 0.0982 182.83)","sm-graphics-secondary":"oklch(0.7284 0.1133 210.64)","sm-graphics-tertiary":"oklch(0.6396 0.145 248.18)","sm-graphics-quaternary":"oklch(0.6296 0.2209 300.47)","sm-colored-shadow":"oklch(0.55 0.2028 263.15 / 0.12)","sm-inset-shadow":"rgba(0, 0, 0, 0.21)","sm-muted":"oklch(0.2264 0 87 / 32%)","sm-border":"oklch(0.2264 0 87 / 12%)","sm-border-subtle":"oklch(0.922 0 0)","sm-sidebar-gradient-start":"oklch(0.54 0.12 210.64)","sm-sidebar-gradient-mid":"oklch(0.56 0.15 248.18)","sm-sidebar-gradient-end":"oklch(0.55 0.1 182.83)","radius":"0.625rem"},"dark":{"sm-text":"oklch(1 0 87)","sm-text-strong":"oklch(0.985 0 0)","sm-text-default":"oklch(0.922 0 0)","sm-text-subtle":"oklch(0.72 0 0)","sm-text-disabled":"oklch(0.442 0 0)","sm-text-contrast":"oklch(0.2264 0 87)","sm-accent":"oklch(0.72 0.14 263.65)","sm-accent-hover":"oklch(0.72 0.14 263.65 / 0.2)","sm-background-darkest":"oklch(0.2264 0 0)","sm-background-lightest":"oklch(0.2809 0 0)","sm-background-gradient-start":"oklch(0.3368 0 0)","sm-background-gradient-end":"oklch(0.3092 0 0)","sm-state-success":"oklch(1 0 87)","sm-state-success-background":"oklch(0.812 0.1064 153.89)","sm-state-success-fg-deep":"hsl(140, 80%, 65%)","sm-state-warning":"oklch(1 0 87)","sm-state-warning-background":"oklch(0.8354 0.1274 72.2)","sm-state-warning-fg-deep":"hsl(35, 80%, 65%)","sm-state-info":"oklch(1 0 87)","sm-state-info-background":"oklch(0.6396 0.145 248.18)","sm-state-info-fg-deep":"hsl(210, 80%, 65%)","sm-state-error":"oklch(0.2264 0 87)","sm-state-error-background":"oklch(0.7044 0.1872 23.19)","sm-graphics-primary":"oklch(0.7675 0.0982 182.83)","sm-graphics-secondary":"oklch(0.7284 0.1133 210.64)","sm-graphics-tertiary":"oklch(0.6396 0.145 248.18)","sm-graphics-quaternary":"oklch(0.6296 0.2209 300.47)","sm-colored-shadow":"oklch(0.2264 0 0)","sm-inset-shadow":"rgba(0, 0, 0, 0.21)","sm-muted":"oklch(1 0 87 / 32%)","sm-border":"oklch(1 0 87 / 12%)","sm-border-subtle":"oklch(0.269 0 0)","sm-sidebar-gradient-start":"oklch(0.54 0.12 210.64)","sm-sidebar-gradient-mid":"oklch(0.56 0.15 248.18)","sm-sidebar-gradient-end":"oklch(0.55 0.1 182.83)","radius":"0.625rem"}},"metadata":{"version":4,"updatedBy":"user_northwind_owner","updatedAt":"2026-04-12T09:30:00.000Z"}},"expiresAt":1744447800}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Builds a temporary theme from the stored theme plus an optional diff, without writing it. ttlSeconds defaults to the platform preview lifetime and accepts at most 300. baseVersion must match the stored theme version or the platform returns 409. The preview expires at the returned Unix timestamp. Repeating the call creates a new preview.","summary":"Preview a theme change","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemePreview"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/settings/theme/logo":{"post":{"tags":["Platform settings"],"operationId":"v1/settings/theme/uploadLogo","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Upload target for one logo slot. PUT the file bytes to `uploadUrl`. `publicUrl` is where the object will be readable after the upload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeLogoUploadOutput"},"examples":{"example-1":{"value":{"mode":"light","bucket":"dalp-public","objectKey":"logos/northwind-coffee/light.png","publicUrl":"https://assets.northwind.example/logos/northwind-coffee/light.png","uploadUrl":"https://assets.northwind.example/upload/logos/northwind-coffee/light.png","method":"PUT"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a short-lived PUT URL for one logo or image slot. fileSize must be between 1 byte and 5 MiB. The platform does not store the file on this call; you PUT the bytes to uploadUrl. Repeating the call issues a new URL.","summary":"Request a theme logo upload URL","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeLogoUpload"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/settings/theme/logo/proxy":{"post":{"tags":["Platform settings"],"operationId":"v1/settings/theme/proxyUploadLogo","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Stored logo after a proxy upload. `publicUrl` is the object the theme can reference.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeLogoProxyUploadOutput"},"examples":{"example-1":{"value":{"mode":"light","objectKey":"logos/northwind-coffee/light.png","publicUrl":"https://assets.northwind.example/logos/northwind-coffee/light.png"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Stores one logo or image slot from base64 fileData and returns the public object URL. Use this when the browser cannot PUT directly to object storage. Encoded data must stay within 7 MiB. Repeating the call stores a new object.","summary":"Upload a theme logo through the platform","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeLogoProxyUpload"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/settings/public-config":{"get":{"tags":["Platform settings"],"operationId":"v1/settings/publicConfig/get","parameters":[],"responses":{"200":{"description":"Public client configuration for v1 callers. Includes the inert `sentry` block and `features.experimentalWalletVerification`, which is always false.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicConfigGetOutputSchemaV1"},"examples":{"example-1":{"value":{"app":{"url":"https://console.northwind.example","logLevel":"info","isDevelopment":false},"explorer":{"url":"https://sepolia.etherscan.io"},"auth":{"enforce2fa":true,"restrictOrgCreationToAdmin":false,"oidcProviders":[{"id":"entra","displayName":"Microsoft Entra ID"}]},"features":{"multiTenancy":true,"i18nLanguageSelector":true,"changeEmail":true,"tokenSale":false,"accountAbstraction":true,"legacyComplianceTemplates":false,"legacyAssetCreation":false,"canton":false,"experimentalWalletVerification":false},"email":{"enabled":true},"support":{"email":"support@northwind.example","consentTitle":"","consentDescription":""},"hasOrganizations":true,"custodyDefaultProvider":"local","sentry":{"environment":"production"}}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the public application, auth, feature, email, support, and custody values a client needs before sign-in. The v1 body still includes the inert sentry block and features.experimentalWalletVerification, which is always false. The call is a read and is safe to retry. It does not require an organization or a chain header.","summary":"Get public client configuration","x-dalp-auth":"optional"}},"/api/v1/settings/global-theme":{"get":{"tags":["Platform settings"],"operationId":"v1/settings/globalTheme/get","parameters":[],"responses":{"200":{"description":"Organization whose theme every tenant inherits. Both fields are null when global theming is off.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalThemeGetOutput"},"examples":{"example-1":{"value":{"orgId":"org_northwind_coffee","orgName":"Northwind Coffee"}},"example-2":{"value":{"orgId":null,"orgName":null}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the organization whose theme every tenant inherits, or null fields when global theming is off. The call is a read and is safe to retry.","summary":"Get the global theme source","x-dalp-auth":"api-key"},"post":{"tags":["Platform settings"],"operationId":"v1/settings/globalTheme/set","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Whether the platform stored the global theme source.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalThemeSetOutput"},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Selects the organization whose theme every tenant inherits, or disables global theming when orgId is null. Only a platform administrator can write this. An unknown organization returns 404. Repeating the same orgId stores the same source again.","summary":"Set the global theme source","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalThemeSet"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/settings/compliance-templates":{"get":{"tags":["Compliance rules"],"operationId":"v1/settings/complianceTemplates/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string"},"required":false},{"name":"offset","in":"query","schema":{"type":"integer"},"required":false},{"name":"limit","in":"query","schema":{"type":"integer"},"required":false},{"name":"jurisdiction","in":"query","schema":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"string","enum":["EU","EEA","UN"]}]},{"type":"string","enum":["GLOBAL"]}],"description":"Jurisdiction filter: a GLEIF code or 'GLOBAL' for global templates"},"required":false},{"name":"search","in":"query","schema":{"type":"string","maxLength":200},"required":false},{"name":"includeSystem","in":"query","schema":{"type":"boolean"},"required":false},{"name":"isDraft","in":"query","schema":{"type":"boolean"},"required":false},{"name":"moduleSetVersion","in":"query","schema":{"type":"integer","minimum":1},"required":false},{"name":"isLegacy","in":"query","schema":{"type":"boolean","description":"Deprecated. Use `moduleSetVersion` instead."},"required":false},{"name":"isSystem","in":"query","schema":{"type":"boolean"},"required":false}],"responses":{"200":{"description":"Paginated list of compliance templates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceTemplatesListOutput"},"examples":{"example-1":{"value":{"items":[{"id":"ct_northwind_eu_transfer","name":"EU transfer restrictions","description":"Transfer restrictions for Northwind Coffee securities issued in the EU","jurisdictions":["EU"],"isSystem":false,"isDraft":false,"moduleSetVersion":2,"organizationId":"org_northwind_coffee","version":1,"modules":[],"requiredControls":[],"createdBy":"user_northwind_owner","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-04-12T09:30:00.000Z"}],"total":1,"limit":25,"offset":0}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one page of compliance templates visible to the active organization, including system templates when includeSystem is true. Limit defaults to 25 and accepts at most 200. Filter by jurisdiction, draft status, module set version, or a search string. The call is a read and is safe to retry.","summary":"List compliance templates","x-dalp-auth":"api-key"},"post":{"tags":["Compliance rules"],"operationId":"v1/settings/complianceTemplates/create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Stored compliance template. Reuse `id` for later read, update, publish, or delete. `isDraft` is false after publish.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationComplianceTemplate"},"examples":{"example-1":{"value":{"id":"ct_northwind_eu_transfer","name":"EU transfer restrictions","description":"Transfer restrictions for Northwind Coffee securities issued in the EU","jurisdictions":["EU"],"isSystem":false,"isDraft":false,"moduleSetVersion":2,"organizationId":"org_northwind_coffee","version":1,"modules":[],"requiredControls":[],"createdBy":"user_northwind_owner","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-04-12T09:30:00.000Z"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Creates a draft compliance template in the active organization and returns the stored record. Name is trimmed and must be unique in the organization. Omitted jurisdictions, modules, and requiredControls become empty arrays. The write is not idempotent: a second call with the same name creates another draft or fails uniqueness.","summary":"Create a compliance template","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInputWire"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/settings/compliance-templates/{id}":{"get":{"tags":["Compliance rules"],"operationId":"v1/settings/complianceTemplates/read","parameters":[{"name":"id","in":"path","schema":{"type":"string","minLength":1,"description":"Compliance template to read."},"required":true}],"responses":{"200":{"description":"Stored compliance template. Reuse `id` for later read, update, publish, or delete. `isDraft` is false after publish.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationComplianceTemplate"},"examples":{"example-1":{"value":{"id":"ct_northwind_eu_transfer","name":"EU transfer restrictions","description":"Transfer restrictions for Northwind Coffee securities issued in the EU","jurisdictions":["EU"],"isSystem":false,"isDraft":false,"moduleSetVersion":2,"organizationId":"org_northwind_coffee","version":1,"modules":[],"requiredControls":[],"createdBy":"user_northwind_owner","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-04-12T09:30:00.000Z"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the compliance template named by the id path parameter. The id is the identifier the platform assigned at create time. A missing or other-organization identifier returns an error. The call is a read and is safe to retry.","summary":"Read a compliance template","x-dalp-auth":"api-key"},"put":{"tags":["Compliance rules"],"operationId":"v1/settings/complianceTemplates/update","parameters":[{"name":"id","in":"path","schema":{"type":"string","minLength":1,"description":"Compliance template to update. Published system templates reject metadata changes."},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Stored compliance template. Reuse `id` for later read, update, publish, or delete. `isDraft` is false after publish.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationComplianceTemplate"},"examples":{"example-1":{"value":{"id":"ct_northwind_eu_transfer","name":"EU transfer restrictions","description":"Transfer restrictions for Northwind Coffee securities issued in the EU","jurisdictions":["EU"],"isSystem":false,"isDraft":false,"moduleSetVersion":2,"organizationId":"org_northwind_coffee","version":1,"modules":[],"requiredControls":[],"createdBy":"user_northwind_owner","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-04-12T09:30:00.000Z"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-0687","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Replaces the draft fields of the compliance template named by the id path parameter and returns the stored record. Published system templates reject metadata changes. A missing identifier returns an error. Repeating an identical body stores the same fields again.","summary":"Update a compliance template","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"not":{}},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"jurisdictions":{"anyOf":[{"$ref":"#/components/schemas/ComplianceTemplateJurisdictions"},{"type":"null"}]},"modules":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TemplateModuleConfig"}},{"type":"null"}]},"requiredControls":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ComplianceTypeId"}},{"type":"null"}]}},"additionalProperties":false}}},"required":false},"x-dalp-auth":"api-key"},"delete":{"tags":["Compliance rules"],"operationId":"v1/settings/complianceTemplates/delete","parameters":[{"name":"id","in":"path","schema":{"type":"string","minLength":1,"description":"Compliance template to delete. System templates cannot be deleted."},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Whether the platform removed the compliance template.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteOutput"},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes the compliance template named by the id path parameter from the active organization. System templates cannot be deleted. A missing identifier returns an error. The delete waits until the row is gone. Repeating the call after a successful delete returns an error.","summary":"Delete a compliance template","x-dalp-auth":"api-key"}},"/api/v1/settings/compliance-templates/{id}/publish":{"put":{"tags":["Compliance rules"],"operationId":"v1/settings/complianceTemplates/publish","parameters":[{"name":"id","in":"path","schema":{"type":"string","minLength":1,"description":"Draft compliance template to publish so new assets can start from it."},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Stored compliance template. Reuse `id` for later read, update, publish, or delete. `isDraft` is false after publish.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationComplianceTemplate"},"examples":{"example-1":{"value":{"id":"ct_northwind_eu_transfer","name":"EU transfer restrictions","description":"Transfer restrictions for Northwind Coffee securities issued in the EU","jurisdictions":["EU"],"isSystem":false,"isDraft":false,"moduleSetVersion":2,"organizationId":"org_northwind_coffee","version":1,"modules":[],"requiredControls":[],"createdBy":"user_northwind_owner","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-04-12T09:30:00.000Z"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0175","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12332"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Marks the named draft as published so new assets can start from it, and returns the stored record. An already published template returns 409. A template that is not ready to publish returns an error naming the gaps. A missing identifier returns an error. The write waits until the stored flag is published.","summary":"Publish a compliance template","x-dalp-auth":"api-key"}},"/api/v1/system/access-manager/roles":{"get":{"tags":["Roles and permissions"],"operationId":"v1/system/accessManager/rolesList","parameters":[{"name":"excludeContracts","in":"query","schema":{"type":"boolean"},"required":false}],"responses":{"200":{"description":"Every account the access manager records, each with the roles it currently holds.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SystemRolesItem"},"description":"Every account the access manager records, each with the roles it currently holds."},"examples":{"example-1":{"value":[{"account":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","roles":["admin","systemManager"]}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every account the access manager records, with the roles each one holds. Set `excludeContracts` to drop contract accounts. The list is indexed access-manager state and is safe to retry.","summary":"List system access-manager roles","x-dalp-auth":"api-key"}},"/api/v1/system/access-manager/roles/{account}":{"get":{"tags":["Roles and permissions"],"operationId":"v1/system/accessManager/rolesRead","parameters":[{"name":"account","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Roles the access manager records for the requested account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemRolesReadOutput"},"examples":{"example-1":{"value":{"account":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","roles":["admin","systemManager"]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the roles the access manager records for one account. The account path is an EVM address. The call is a read and is safe to retry.","summary":"Read system roles for an account","x-dalp-auth":"api-key"}},"/api/v1/system/access-manager/grant-roles":{"post":{"tags":["Roles and permissions"],"operationId":"v1/system/accessManager/grantRole","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accounts and roles the request applied. When the access manager already held this state, the platform still returns this body and does not queue a second transaction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemRoleMutationOutput"},"examples":{"example-1":{"value":{"accounts":["0x70997970C51812dc3A010C7d01b50e0d17dc79C8"],"roles":["tokenManager"]}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Hash of the queued transaction when the platform submitted one. Absent when the requested state was already true."},"required":false},"location":{"schema":{"type":"string","description":"URL of the accepted mutation, or of its status resource when the request is processed asynchronously."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Preference the platform applied, such as `respond-async` when you asked to queue the work."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031","DALP-12366","DALP-4001","DALP-4008","DALP-4009"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12365"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Grants one or more system roles to one or more wallets. Send one account with several roles, or several accounts with one role. The caller needs the admin role. When the access manager already holds this state, the platform returns the same body and does not queue a second transaction.","summary":"Grant system roles","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemRoleMutationV1Input"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/system/access-manager/grant-role-by-participant":{"post":{"tags":["Roles and permissions"],"operationId":"v1/system/accessManager/grantRoleByParticipant","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accounts and roles the request applied. When the access manager already held this state, the platform still returns this body and does not queue a second transaction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemRoleMutationOutput"},"examples":{"example-1":{"value":{"accounts":["0x70997970C51812dc3A010C7d01b50e0d17dc79C8"],"roles":["tokenManager"]}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Hash of the queued transaction when the platform submitted one. Absent when the requested state was already true."},"required":false},"location":{"schema":{"type":"string","description":"URL of the accepted mutation, or of its status resource when the request is processed asynchronously."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Preference the platform applied, such as `respond-async` when you asked to queue the work."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031","DALP-12366","DALP-4001","DALP-4008","DALP-4009"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12365"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Grants one system role to the executor wallet of a participant or to the wallet registered to an identity. Send `participantId` or `identityAddress`. The caller needs the admin role. Repeating the same grant does not queue a second transaction.","summary":"Grant participant system roles","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemParticipantRoleMutationInput"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/system/access-manager/revoke-roles":{"delete":{"tags":["Roles and permissions"],"operationId":"v1/system/accessManager/revokeRole","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accounts and roles the request applied. When the access manager already held this state, the platform still returns this body and does not queue a second transaction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemRoleMutationOutput"},"examples":{"example-1":{"value":{"accounts":["0x70997970C51812dc3A010C7d01b50e0d17dc79C8"],"roles":["tokenManager"]}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Hash of the queued transaction when the platform submitted one. Absent when the requested state was already true."},"required":false},"location":{"schema":{"type":"string","description":"URL of the accepted mutation, or of its status resource when the request is processed asynchronously."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Preference the platform applied, such as `respond-async` when you asked to queue the work."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031","DALP-12366","DALP-4001","DALP-4008","DALP-4009"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12365"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Revokes one or more system roles from one or more wallets. Send one account with several roles, or several accounts with one role. The caller needs the admin role. When the access manager already lacks this state, the platform returns the same body and does not queue a second transaction.","summary":"Revoke system roles","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemRoleMutationV1Input"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/system/access-manager/revoke-role-by-participant":{"post":{"tags":["Roles and permissions"],"operationId":"v1/system/accessManager/revokeRoleByParticipant","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accounts and roles the request applied. When the access manager already held this state, the platform still returns this body and does not queue a second transaction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemRoleMutationOutput"},"examples":{"example-1":{"value":{"accounts":["0x70997970C51812dc3A010C7d01b50e0d17dc79C8"],"roles":["tokenManager"]}}}}},"headers":{"x-transaction-hash":{"schema":{"type":"string","description":"Hash of the queued transaction when the platform submitted one. Absent when the requested state was already true."},"required":false},"location":{"schema":{"type":"string","description":"URL of the accepted mutation, or of its status resource when the request is processed asynchronously."},"required":false},"preference-applied":{"schema":{"type":"string","description":"Preference the platform applied, such as `respond-async` when you asked to queue the work."},"required":false}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031","DALP-12366","DALP-4001","DALP-4008","DALP-4009"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12250","DALP-12307","DALP-12365"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Revokes one system role from the executor wallet of a participant or from the wallet registered to an identity. Send `participantId` or `identityAddress`. The caller needs the admin role. Repeating the same revoke does not queue a second transaction.","summary":"Revoke participant system roles","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemParticipantRoleMutationInput"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/system/activity/{accountAddress}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/activity/list","parameters":[{"name":"accountAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Wallet or contract whose indexed events to return.","examples":["0x2546BcD3c84621e976D8185a91A922aE77ECEc30"]},"required":true},{"name":"limit","in":"query","schema":{"type":"number","minimum":1,"maximum":500,"description":"Number of events to return. Defaults to 20. Maximum is 500.","examples":[20,50,100]},"required":false},{"name":"offset","in":"query","schema":{"type":"number","minimum":0,"description":"Number of matching events to skip. Defaults to 0.","examples":[0,20,100]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["blockTimestamp","eventName","blockNumber"],"description":"Field to sort by. Defaults to `blockTimestamp`.","examples":["blockTimestamp","eventName"]},"required":false},{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Defaults to `desc` so the newest event is first.","examples":["desc","asc"]},"required":false},{"name":"eventName","in":"query","schema":{"type":"string","description":"Keep only events with this exact name, such as `Transfer` or `Approval`.","examples":["Transfer","Approval"]},"required":false},{"name":"search","in":"query","schema":{"type":"string","description":"Case-insensitive partial match against the event name.","examples":["trans","approv"]},"required":false},{"name":"startDate","in":"query","schema":{"type":"string"},"required":false},{"name":"endDate","in":"query","schema":{"type":"string"},"required":false}],"responses":{"200":{"description":"Indexed events that name the requested account as sender, emitter, or an involved address, plus the matching total.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityListOutput"},"examples":{"example-1":{"value":{"events":[{"id":"80002-18429311-12","eventName":"Transfer","txIndex":"12","blockNumber":"18429311","blockTimestamp":"2026-03-11T16:02:08.000Z","transactionHash":"0x4f3d1a8c0b6e29d5741ac0f8b2e7d6390c5148aa9be3f207d4c8615ae0937b2c","emitter":{"id":"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC"},"sender":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"metaTxSigner":null,"displaySender":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"relayerKind":null,"relayer":null,"userOpHash":null,"involved":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},{"id":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"},{"id":"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC"}],"values":[{"id":"from","name":"from","value":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},{"id":"to","name":"to","value":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"},{"id":"value","name":"value","value":"2500000000"}]}],"total":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns indexed events that name the account as sender, emitter, or an involved address. Filter on `eventName`, `search`, and a date window. The default order is newest first. The call is a read and is safe to retry.","summary":"List account activity","x-dalp-auth":"api-key"}},"/api/v1/system/activity/{accountAddress}/stats":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/activity/stats","parameters":[{"name":"accountAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Wallet or contract whose indexed events to return.","examples":["0x2546BcD3c84621e976D8185a91A922aE77ECEc30"]},"required":true},{"name":"range","in":"query","schema":{"type":"object","properties":{"interval":{"type":"string","enum":["hour","day"]},"from":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"to":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"isPreset":{"type":"boolean"}},"required":["interval","from","to","isPreset"],"additionalProperties":false,"description":"Window for the activity series. Send a named preset such as `trailing1Month`, or an explicit from/to pair with an `hour` or `day` interval."},"required":true,"style":"deepObject","explode":true}],"responses":{"200":{"description":"Event counts and a time series for the requested account and range.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityStatsOutput"},"examples":{"example-1":{"value":{"timeSeries":[{"timestamp":"2026-02-11T00:00:00.000Z","count":4},{"timestamp":"2026-02-25T00:00:00.000Z","count":9},{"timestamp":"2026-03-11T23:59:59.000Z","count":3}],"count":16}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns event counts for the account over the requested range, plus a time series for charting. The range is required. The call is a read of indexed events and is safe to retry.","summary":"Read account activity statistics","x-dalp-auth":"api-key"}},"/api/v1/system/addon-factory":{"get":{"tags":["Systems and factories"],"operationId":"v1/system/addonFactory/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["id","name","typeId"]},"required":false},{"name":"typeId","in":"query","schema":{"type":"string","enum":["push-airdrop","vesting-airdrop","time-bound-airdrop","fixed-yield-schedule","xvp-settlement","trading-venue","token-sale","historical-balances-feature-factory","maturity-redemption-feature-factory","hold-feature-factory","transaction-fee-feature-factory","transaction-fee-accounting-feature-factory","voting-power-feature-factory","external-transaction-fee-feature-factory","fixed-treasury-yield-feature-factory","dividend-yield-feature-factory","interest-yield-feature-factory","aum-fee-feature-factory","conversion-feature-factory","conversion-minter-feature-factory","distribution-waterfall-feature-factory","permit-feature-factory","scalar-feed-aggregator-adapter-factory","issuer-signed-scalar-feed","paymaster-signer","token-governance","token-governance-timelock","document-anchor-registry","access-manager","price-resolver","airdrops","yield","xvp"],"description":"Keep only addon factories of this type, such as `xvp-settlement`.","examples":["xvp-settlement","fixed-yield-schedule"]},"required":false},{"name":"account","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Keep only addon factories created by this wallet.","examples":["0x2546BcD3c84621e976D8185a91A922aE77ECEc30"]},"required":false}],"responses":{"200":{"description":"Every addon factory registered on the active system.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SystemAddon"},"description":"Every addon factory registered on the active system."},"examples":{"example-1":{"value":[{"id":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","name":"Northwind XvP Settlement","typeId":"xvp-settlement","deployedInTransaction":"0x1c9a5f80d3b47e6218ca03f95d7be41086c2d97fa5301be8c47d0f2635a9184b","account":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every addon factory registered on the active system. Filter on `typeId` and `account`. The default sort is `id` ascending. The call is a read and is safe to retry.","summary":"List system addon factories","x-dalp-auth":"api-key"},"post":{"tags":["Systems and factories"],"operationId":"v1/system/addonFactory/create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The active system after the addon-factory registration is accepted. Registry fields reflect indexed state, so a just-created factory appears after the indexer catches up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/System"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","canResume":false,"chainId":80002,"deployedInTransaction":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4","tokenFactoryRegistry":{"id":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","version":1,"tokenFactories":[{"id":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","name":"Northwind Coffee Bond Factory","typeId":"bond"}]},"systemAddonRegistry":{"id":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","version":1,"systemAddons":[{"id":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","name":"Northwind XvP Settlement","typeId":"xvp-settlement","version":1}]},"compliance":null,"complianceModuleRegistry":null,"systemAccessManager":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","accessControl":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","addonModule":[],"addonRegistryModule":[],"admin":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false}],"auditor":[],"claimPolicyManager":[],"claimIssuer":[],"complianceManager":[],"custodian":[],"emergency":[],"feedsManager":[],"fundsManager":[],"gasManager":[],"governance":[],"identityManager":[],"identityRegistryModule":[],"organisationIdentityManager":[],"saleAdmin":[],"supplyManagement":[],"systemManager":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false}],"systemModule":[],"tokenFactoryModule":[],"tokenFactoryRegistryModule":[],"tokenManager":[{"id":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8","isContract":false}],"trustedIssuersMetaRegistryModule":[],"addonManager":[],"roleAdmins":[]}},"identityRegistryStorage":{"id":"0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec"},"identityRegistry":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","registeredIdentities":[{"identity":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"country":56,"status":"ACTIVE"}]},"trustedIssuersRegistry":{"id":"0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097"},"topicSchemeRegistry":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"externalTokenRegistry":{"id":"0x68B1D87F95878fE05B998F19b66F4baba5De1aed"},"status":"completed","updatedAt":"2026-03-11T16:02:08.000Z","userIdentityRegistered":true,"isZeroGasNetwork":false}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Registers one or more addon factories on the active system. Implementation addresses come from the directory unless you override them. The caller needs addon-create authority. Repeat the same body only with the same wallet verification when the signing wallet requires a challenge.","summary":"Create system addon factories","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemAddonCreate"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/system/addon-factory/{addonFactoryAddress}":{"get":{"tags":["Systems and factories"],"operationId":"v1/system/addonFactory/read","parameters":[{"name":"addonFactoryAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Addon factory contract to read.","examples":["0xdD2FD4581271e230360230F9337D5c0430Bf44C0"]},"required":true}],"responses":{"200":{"description":"One addon factory and the v1 type family (`xvp`, `yield`, `airdrops`, or `custody`) the platform maps it to.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddonFactoryReadV1Output"},"examples":{"example-1":{"value":{"id":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","name":"Northwind XvP Settlement","typeId":"xvp-settlement","version":1,"type":"xvp"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one addon factory by address, including the v1 type family (`xvp`, `yield`, `airdrops`, or `custody`). A missing address returns 404. The call is a read and is safe to retry.","summary":"Read a system addon factory","x-dalp-auth":"api-key"}},"/api/v1/systems":{"get":{"tags":["Systems and factories"],"operationId":"v1/system/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Defaults to `asc`.","examples":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["id"],"description":"Field to sort by. The only accepted value is `id`.","examples":["id"]},"required":false}],"responses":{"200":{"description":"Every system the active organization owns on the selected network, as `{ id }` rows.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SystemListItem"},"description":"Every system the active organization owns on the selected network, as `{ id }` rows."},"examples":{"example-1":{"value":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every system the authenticated organization owns on the selected network. The list is indexed bootstrap state, so a newly deployed system appears only after the indexer catches up. The call is safe to retry.","summary":"List deployed systems","x-dalp-auth":"api-key"}},"/api/v1/system/{systemAddress}":{"get":{"tags":["Systems and factories"],"operationId":"v1/system/read","parameters":[{"name":"systemAddress","in":"path","schema":{"anyOf":[{"type":"string","enum":["default"]},{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]}],"description":"System to read. Send `default` for the active organization's system on the selected network, or send the system contract address.","examples":["default","0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"The deployed system, its registries, and the caller's permissions on that system. Registry fields are null until bootstrap finishes and the indexer stores them.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/System_1"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","canResume":false,"chainId":80002,"deployedInTransaction":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4","tokenFactoryRegistry":{"id":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","version":1,"tokenFactories":[{"id":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","name":"Northwind Coffee Bond Factory","typeId":"bond"}]},"systemAddonRegistry":{"id":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","version":1,"systemAddons":[{"id":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","name":"Northwind XvP Settlement","typeId":"xvp-settlement","version":1}]},"compliance":null,"complianceModuleRegistry":null,"systemAccessManager":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","accessControl":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","addonModule":[],"addonRegistryModule":[],"admin":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false}],"auditor":[],"claimPolicyManager":[],"claimIssuer":[],"complianceManager":[],"custodian":[],"emergency":[],"feedsManager":[],"fundsManager":[],"gasManager":[],"governance":[],"identityManager":[],"identityRegistryModule":[],"organisationIdentityManager":[],"saleAdmin":[],"supplyManagement":[],"systemManager":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false}],"systemModule":[],"tokenFactoryModule":[],"tokenFactoryRegistryModule":[],"tokenManager":[{"id":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8","isContract":false}],"trustedIssuersMetaRegistryModule":[],"addonManager":[],"roleAdmins":[]}},"identityRegistryStorage":{"id":"0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec"},"identityRegistry":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","registeredIdentities":[{"identity":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"country":56,"status":"ACTIVE"}]},"trustedIssuersRegistry":{"id":"0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097"},"topicSchemeRegistry":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"externalTokenRegistry":{"id":"0x68B1D87F95878fE05B998F19b66F4baba5De1aed"},"status":"completed","updatedAt":"2026-03-11T16:02:08.000Z","userIdentityRegistered":true,"isZeroGasNetwork":false}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one system by address, or the organization's default system when the path is `default`. The body is indexed bootstrap state, including registries and the caller's permissions. A missing address returns 404. The call is safe to retry.","summary":"Read a deployed system","x-dalp-auth":"api-key"}},"/api/v1/system/directory":{"get":{"tags":["Systems and factories"],"operationId":"v1/system/directory/read","parameters":[{"name":"contract","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false}],"responses":{"200":{"description":"Directory catalog for the selected network, or null when the platform has no indexed directory for the requested contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectoryReadResult"},"examples":{"example-1":{"value":{"id":"0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199","systemImplementation":"0x90F79bf6EB2c4f870365E785982E1f101E93b906","systemAccessManagerImplementation":"0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65","forwarder":"0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc","systemFactory":"0x976EA74026E726554dB657fA54763abd0C3a0aa9","identityFactory":"0x14dC79964da2C08b23698B3D3cc7Ca32193d9955","identityFactoryImplementation":"0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f","identityImplementations":{"identityImplementation":"0xa0Ee7A142d267C1f36714E4a8F75612F20a79720","contractIdentityImplementation":"0xBcd4042DE499D14e55001CcbB24a551F3b954096"},"systemImplementations":{"complianceImplementation":"0x71bE63f3384f5fb98995898A86B02Fb2426c5788","identityRegistryImplementation":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","identityRegistryStorageImplementation":"0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec","trustedIssuersRegistryImplementation":"0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097","trustedIssuersMetaRegistryImplementation":"0xcd3B766CCDd6AE721141F452C550Ca635964ce71","topicSchemeRegistryImplementation":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","tokenAccessManagerImplementation":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","tokenFactoryRegistryImplementation":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","complianceModuleRegistryImplementation":"0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199","addonRegistryImplementation":"0x09DB0a93B389bEF724429898f539AEB7ac2Dd55f","identityVerificationComplianceModule":"0x5FbDB2315678afecb367f032d93F642f64180aa3","externalTokenRegistryImplementation":"0x68B1D87F95878fE05B998F19b66F4baba5De1aed"},"tokenTypes":[{"id":"0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d6","typeId":"0x626f6e6400000000000000000000000000000000000000000000000000000000","name":"Bond","implementation":"0x90F79bf6EB2c4f870365E785982E1f101E93b906","factoryImplementation":"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC","registeredAt":"2026-01-08T10:00:00.000Z","isExperimental":false}],"complianceModuleTypes":[{"id":"0x636f756e7472792d616c6c6f776c697374000000000000000000000000000000","typeId":"0x636f756e7472792d616c6c6f776c697374000000000000000000000000000001","name":"CountryAllowlist","implementation":"0x5FbDB2315678afecb367f032d93F642f64180aa3","registeredAt":"2026-01-08T10:00:00.000Z","isExperimental":false}],"addonTypes":[{"id":"0x7876702d736574746c656d656e74000000000000000000000000000000000000","typeId":"0x7876702d736574746c656d656e74000000000000000000000000000000000001","name":"XvP","kind":"factory","factoryImplementation":"0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65","instanceImplementation":"0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc","registeredAt":"2026-01-08T10:00:00.000Z","isExperimental":false}]}},"example-2":{"value":null}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the directory catalog for the selected network: current implementations plus registered token, compliance-module, and addon types. Omit `contract` to use the configured directory. The call is a read and is safe to retry.","summary":"Read the system directory","x-dalp-auth":"api-key"}},"/api/v1/system/entity/list":{"get":{"tags":["Systems and factories"],"operationId":"v1/system/entity/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Defaults to `asc`.","examples":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","description":"Field to sort by. Defaults to `lastActivity`.","examples":["lastActivity"]},"required":false},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"description":"Number of matching entities to skip. Defaults to 0.","examples":[0,20]},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":200,"description":"Page size. Defaults to 25. Maximum is 200.","examples":[25,50]},"required":false},{"name":"filters","in":"query","schema":{"type":"object","properties":{"entityType":{"type":"string","enum":["eoa","token","asset","bond","equity","fund","deposit","stablecoin","real-estate","precious-metal","system","smart-account","contract"],"description":"Keep only entities of this class, such as `eoa` or `contract`.","examples":["eoa","contract"]}},"additionalProperties":false,"description":"Optional filters. Set `entityType` to keep only one entity class."},"required":false,"style":"deepObject","explode":true}],"responses":{"200":{"description":"A page of system entities. `total` counts every matching entity, `limit` is the requested page size (at most 200), and `offset` is the number of matching entities skipped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListOutput"},"examples":{"example-1":{"value":{"items":[{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","contractAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","contractName":"Northwind Coffee Treasury Identity","entityType":"eoa","isContract":false,"status":"registered","country":"BE","verificationBadges":["knowYourCustomer"],"lastActivity":"2026-03-11T16:02:08.000Z","activeClaimsCount":2,"revokedClaimsCount":0,"untrustedClaimsCount":0,"deployedInTransaction":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4"}],"total":1,"limit":20,"offset":0}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a page of identities and contracts indexed for the active system. Filter on `entityType`, sort on `lastActivity` by default, and page with `limit` (at most 200) and `offset`. The call is a read and is safe to retry.","summary":"List system entities","x-dalp-auth":"api-key"}},"/api/v1/system/token-factory":{"get":{"tags":["Systems and factories"],"operationId":"v1/system/factory/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Defaults to `asc`.","examples":["asc","desc"]},"required":false},{"name":"hasTokens","in":"query","schema":{"type":"boolean","description":"When true, keep only factories that have created at least one token. When false, keep only factories that have not. Omit the field to return every factory.","examples":[true,false]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["id","name","typeId"],"description":"Field to sort by. Defaults to `id`.","examples":["id","name","typeId"]},"required":false}],"responses":{"200":{"description":"Every token factory indexed for the active system, in the requested sort order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FactoryList"},"examples":{"example-1":{"value":[{"id":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","name":"Northwind Coffee Bond Factory","typeId":"bond","hasTokens":true,"tokenExtensions":["PAUSABLE","BURNABLE","BOND"]}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every token factory indexed for the active system. Filter on `hasTokens` to keep only factories that have created tokens, or only those that have not. The default sort is `id`. The call is a read and is safe to retry.","summary":"List token factories","x-dalp-auth":"api-key"},"post":{"tags":["Systems and factories"],"operationId":"v1/system/factory/create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The active system after the factory-creation transaction is accepted. Registry fields reflect indexed state, so a just-created factory appears after the indexer catches up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/System_2"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","canResume":false,"chainId":80002,"deployedInTransaction":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4","tokenFactoryRegistry":{"id":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","version":1,"tokenFactories":[{"id":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","name":"Northwind Coffee Bond Factory","typeId":"bond"}]},"systemAddonRegistry":{"id":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","version":1,"systemAddons":[{"id":"0xdD2FD4581271e230360230F9337D5c0430Bf44C0","name":"Northwind XvP Settlement","typeId":"xvp-settlement","version":1}]},"compliance":null,"complianceModuleRegistry":null,"systemAccessManager":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","accessControl":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","addonModule":[],"addonRegistryModule":[],"admin":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false}],"auditor":[],"claimPolicyManager":[],"claimIssuer":[],"complianceManager":[],"custodian":[],"emergency":[],"feedsManager":[],"fundsManager":[],"gasManager":[],"governance":[],"identityManager":[],"identityRegistryModule":[],"organisationIdentityManager":[],"saleAdmin":[],"supplyManagement":[],"systemManager":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false}],"systemModule":[],"tokenFactoryModule":[],"tokenFactoryRegistryModule":[],"tokenManager":[{"id":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8","isContract":false}],"trustedIssuersMetaRegistryModule":[],"addonManager":[],"roleAdmins":[]}},"identityRegistryStorage":{"id":"0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec"},"identityRegistry":{"id":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a","registeredIdentities":[{"identity":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"country":56,"status":"ACTIVE"}]},"trustedIssuersRegistry":{"id":"0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097"},"topicSchemeRegistry":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"externalTokenRegistry":{"id":"0x68B1D87F95878fE05B998F19b66F4baba5De1aed"},"status":"completed","updatedAt":"2026-03-11T16:02:08.000Z","userIdentityRegistered":true,"isZeroGasNetwork":false}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12251","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Registers one to ten token factories on the active system. Implementation addresses come from the directory unless you override them. The caller needs factory-create authority. Repeat the same body only with the same wallet verification when the signing wallet requires a challenge.","summary":"Create token factories","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FactoryCreate"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/system/token-factory/{factoryAddress}":{"get":{"tags":["Systems and factories"],"operationId":"v1/system/factory/read","parameters":[{"name":"factoryAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Token factory contract to read.","examples":["0xbDA5747bFD65F08deb54cb465eB87D40e51B197E"]},"required":true}],"responses":{"200":{"description":"One token factory and the implementations the indexer recorded for it. `factoryImplementation` is the registry-level factory, and `instanceImplementation` is the implementation new token proxies delegate to. Either field is null when the indexer has not stored it yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenFactoryDetail"},"examples":{"example-1":{"value":{"id":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","name":"Northwind Coffee Bond Factory","typeId":"bond","factoryImplementation":"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC","instanceImplementation":"0x90F79bf6EB2c4f870365E785982E1f101E93b906"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one token factory by address, including the implementations the indexer recorded. A missing address returns 404. The call is a read and is safe to retry.","summary":"Read a token factory","x-dalp-auth":"api-key"}},"/api/v1/system/token-factory/available":{"post":{"tags":["Systems and factories"],"operationId":"v1/system/factory/available","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Whether the predicted or supplied access-manager address is free. `isAvailable` is true when no contract is deployed at that address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableOutput"},"examples":{"example-1":{"value":{"isAvailable":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Reports whether a predicted or supplied access-manager address is still free. Send token metadata to predict the address, or send `accessControl` to test a known address. The check does not deploy a contract and is safe to retry.","summary":"Check token-factory address availability","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableInput"}}},"required":false},"x-dalp-auth":"api-key"}},"/api/v1/system/token-factory/predict-address":{"post":{"tags":["Systems and factories"],"operationId":"v1/system/factory/predictAddress","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"CREATE2 address the factory will use for the token access manager. The address is not reserved until the token is created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictAccessManagerAddressOutput"},"examples":{"example-1":{"value":{"predictedAddress":"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681","DALP-12031"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the CREATE2 address the factory will use for the token access manager. The same metadata always yields the same address. The address is not reserved until the token is created. The call is a read of factory and salt inputs and is safe to retry.","summary":"Predict a token-factory access-manager address","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictAccessManagerAddressInput"}}},"required":true},"x-dalp-auth":"api-key"}},"/api/v1/system/stats/asset-activity/by-preset/{preset}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/assetActivityByPreset","parameters":[{"name":"preset","in":"path","schema":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested named window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsAssetActivityOutput"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","transferEventsCount":18,"mintEventsCount":2,"burnEventsCount":0},{"timestamp":"2026-02-25T00:00:00.000Z","transferEventsCount":24,"mintEventsCount":1,"burnEventsCount":1},{"timestamp":"2026-03-11T23:59:59.000Z","transferEventsCount":11,"mintEventsCount":0,"burnEventsCount":0}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns transfer, mint, and burn counts for tokens in the active system, bucketed by the preset interval. The path names a range preset such as `trailing1Month` or `ytd`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read asset activity for a range preset","x-dalp-auth":"api-key"}},"/api/v1/system/stats/asset-activity/by-range":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/assetActivityByRange","parameters":[{"name":"interval","in":"query","schema":{"type":"string","enum":["hour","day"],"description":"Bucket size for the series. Use `hour` for short windows and `day` for longer ones.","examples":["day","hour"]},"required":true},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested from/to window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsAssetActivityOutput_1"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","transferEventsCount":18,"mintEventsCount":2,"burnEventsCount":0},{"timestamp":"2026-02-25T00:00:00.000Z","transferEventsCount":24,"mintEventsCount":1,"burnEventsCount":1},{"timestamp":"2026-03-11T23:59:59.000Z","transferEventsCount":11,"mintEventsCount":0,"burnEventsCount":0}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns transfer, mint, and burn counts for tokens in the active system, bucketed by the requested interval. Send `interval` as `hour` or `day`, plus `from` and `to` as UTC timestamps. `from` must be on or before `to`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read asset activity for a custom range","x-dalp-auth":"api-key"}},"/api/v1/system/stats/asset-lifecycle/by-preset/{preset}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/assetLifecycleByPreset","parameters":[{"name":"preset","in":"path","schema":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested named window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsAssetLifecycleOutput"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","assetsCreated":1,"assetsLaunched":1},{"timestamp":"2026-02-25T00:00:00.000Z","assetsCreated":2,"assetsLaunched":1},{"timestamp":"2026-03-11T23:59:59.000Z","assetsCreated":0,"assetsLaunched":1}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns token creation and launch counts for the active system, bucketed by the preset interval. The path names a range preset such as `trailing1Month` or `ytd`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read asset lifecycle for a range preset","x-dalp-auth":"api-key"}},"/api/v1/system/stats/asset-lifecycle/by-range":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/assetLifecycleByRange","parameters":[{"name":"interval","in":"query","schema":{"type":"string","enum":["hour","day"],"description":"Bucket size for the series. Use `hour` for short windows and `day` for longer ones.","examples":["day","hour"]},"required":true},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested from/to window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsAssetLifecycleOutput_1"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","assetsCreated":1,"assetsLaunched":1},{"timestamp":"2026-02-25T00:00:00.000Z","assetsCreated":2,"assetsLaunched":1},{"timestamp":"2026-03-11T23:59:59.000Z","assetsCreated":0,"assetsLaunched":1}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns token creation and launch counts for the active system, bucketed by the requested interval. Send `interval` as `hour` or `day`, plus `from` and `to` as UTC timestamps. `from` must be on or before `to`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read asset lifecycle for a custom range","x-dalp-auth":"api-key"}},"/api/v1/system/stats/assets":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/assets","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the active system.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsAssetsOutput"},"examples":{"example-1":{"value":{"totalAssets":12,"assetBreakdown":{"bond":4,"equity":3,"deposit":5},"totalValue":"2450000.50","valueBreakdown":{"bond":"1188250.25","equity":"612000.00","deposit":"649750.25"},"valueBreakdownByClass":{"fixed-income":"1838000.50","equity":"612000.00"},"tokensCreatedCount":12,"tokensLaunchedCount":10,"pendingLaunchesCount":2,"conversionReliable":true}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns current token counts and values for the active system, split by type and class. Monetary fields are decimal strings in the organization base currency. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read system asset counts","x-dalp-auth":"api-key"}},"/api/v1/system/stats/claims-stats-state":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/claimsStatsState","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the active system.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsClaimsStatsStateOutput"},"examples":{"example-1":{"value":{"totalIssuedClaims":120,"totalActiveClaims":98,"totalRemovedClaims":14,"totalRevokedClaims":8}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns issued, active, removed, and revoked claim totals for the active system. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read current claim totals","x-dalp-auth":"api-key"}},"/api/v1/system/stats/claims-stats/by-preset/{preset}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/claimsStatsByPreset","parameters":[{"name":"preset","in":"path","schema":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested named window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsClaimsStatsOutput"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalIssuedClaims":96,"totalActiveClaims":82,"totalRemovedClaims":10,"totalRevokedClaims":4},{"timestamp":"2026-03-11T23:59:59.000Z","totalIssuedClaims":120,"totalActiveClaims":98,"totalRemovedClaims":14,"totalRevokedClaims":8}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns issued, active, removed, and revoked claim counts, bucketed by the preset interval. The path names a range preset such as `trailing1Month` or `ytd`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read claim totals for a range preset","x-dalp-auth":"api-key"}},"/api/v1/system/stats/claims-stats/by-range":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/claimsStatsByRange","parameters":[{"name":"interval","in":"query","schema":{"type":"string","enum":["hour","day"],"description":"Bucket size for the series. Use `hour` for short windows and `day` for longer ones.","examples":["day","hour"]},"required":true},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested from/to window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsClaimsStatsOutput_1"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalIssuedClaims":96,"totalActiveClaims":82,"totalRemovedClaims":10,"totalRevokedClaims":4},{"timestamp":"2026-03-11T23:59:59.000Z","totalIssuedClaims":120,"totalActiveClaims":98,"totalRemovedClaims":14,"totalRevokedClaims":8}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns issued, active, removed, and revoked claim counts, bucketed by the requested interval. Send `interval` as `hour` or `day`, plus `from` and `to` as UTC timestamps. `from` must be on or before `to`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read claim totals for a custom range","x-dalp-auth":"api-key"}},"/api/v1/system/stats/country-asset-count":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/countryAssetCount","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the active system.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsCountryAssetCountOutput"},"examples":{"example-1":{"value":{"totalsByCountry":{"56":7,"840":5},"totalCountries":2,"totalAssets":12}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns token counts grouped by the issuing token's ISO 3166 numeric country code. The 0 bucket holds tokens with no assigned country. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read asset counts by country","x-dalp-auth":"api-key"}},"/api/v1/system/stats/identity-count":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/identityCount","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the active system.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsIdentityCountOutput"},"examples":{"example-1":{"value":{"userIdentitiesCreatedCount":51,"activeUserIdentitiesCount":48,"pendingRegistrationsCount":3}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns created, active, and pending identity counts for the active system. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read current identity totals","x-dalp-auth":"api-key"}},"/api/v1/system/stats/identity-stats-over-time/by-preset/{preset}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/identityStatsOverTimeByPreset","parameters":[{"name":"preset","in":"path","schema":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested named window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsIdentityStatsOverTimeOutput"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"identityStats":[{"timestamp":"2026-02-11T00:00:00.000Z","activeUserIdentitiesCount":41},{"timestamp":"2026-02-25T00:00:00.000Z","activeUserIdentitiesCount":45},{"timestamp":"2026-03-11T23:59:59.000Z","activeUserIdentitiesCount":48}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns active identity counts, bucketed by the preset interval. The path names a range preset such as `trailing1Month` or `ytd`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read identity totals for a range preset","x-dalp-auth":"api-key"}},"/api/v1/system/stats/identity-stats-over-time/by-range":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/identityStatsOverTimeByRange","parameters":[{"name":"interval","in":"query","schema":{"type":"string","enum":["hour","day"],"description":"Bucket size for the series. Use `hour` for short windows and `day` for longer ones.","examples":["day","hour"]},"required":true},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested from/to window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsIdentityStatsOverTimeOutput_1"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"identityStats":[{"timestamp":"2026-02-11T00:00:00.000Z","activeUserIdentitiesCount":41},{"timestamp":"2026-02-25T00:00:00.000Z","activeUserIdentitiesCount":45},{"timestamp":"2026-03-11T23:59:59.000Z","activeUserIdentitiesCount":48}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns active identity counts, bucketed by the requested interval. Send `interval` as `hour` or `day`, plus `from` and `to` as UTC timestamps. `from` must be on or before `to`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read identity totals for a custom range","x-dalp-auth":"api-key"}},"/api/v1/system/stats/portfolio/by-preset/{preset}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/portfolioByPreset","parameters":[{"name":"preset","in":"path","schema":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested named window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsPortfolioOutput"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalValueInBaseCurrency":2210000},{"timestamp":"2026-02-25T00:00:00.000Z","totalValueInBaseCurrency":2365400},{"timestamp":"2026-03-11T23:59:59.000Z","totalValueInBaseCurrency":2450000.5}],"conversionReliable":true}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the caller's portfolio value over the preset window, in the organization base currency. The path names a range preset such as `trailing1Month` or `ytd`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read portfolio value for a range preset","x-dalp-auth":"api-key"}},"/api/v1/system/stats/portfolio/by-range":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/portfolioByRange","parameters":[{"name":"interval","in":"query","schema":{"type":"string","enum":["hour","day"],"description":"Bucket size for the series. Use `hour` for short windows and `day` for longer ones.","examples":["day","hour"]},"required":true},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested from/to window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsPortfolioOutput_1"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalValueInBaseCurrency":2210000},{"timestamp":"2026-02-25T00:00:00.000Z","totalValueInBaseCurrency":2365400},{"timestamp":"2026-03-11T23:59:59.000Z","totalValueInBaseCurrency":2450000.5}],"conversionReliable":true}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the caller's portfolio value over the requested window, in the organization base currency. Send `interval` as `hour` or `day`, plus `from` and `to` as UTC timestamps. `from` must be on or before `to`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read portfolio value for a custom range","x-dalp-auth":"api-key"}},"/api/v1/system/stats/portfolio/details":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/portfolioDetails","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the supplied query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsPortfolioDetailsOutputSchemaV1"},"examples":{"example-1":{"value":{"totalValue":"2450000.50","totalAssetTypes":3,"totalAssetsHeld":12,"typeBreakdown":[{"assetType":"bond","totalValue":"1188250.25","tokenBalancesCount":4,"percentage":48.5},{"assetType":"equity","totalValue":"612000.00","tokenBalancesCount":3,"percentage":25},{"assetType":"deposit","totalValue":"649750.25","tokenBalancesCount":5,"percentage":26.5}],"valueBreakdown":{"bond":"1188250.25","equity":"612000.00","deposit":"649750.25"},"holdingsBreakdown":{"bond":4,"equity":3,"deposit":5},"valueBreakdownByClass":{"fixed-income":"1838000.50","equity":"612000.00"},"holdingsBreakdownByClass":{"fixed-income":9,"equity":3},"conversionReliable":true,"dayChange":{"absoluteChange":"18450.25","percentChange":0.76,"windowStart":"2026-03-10T16:02:08.000Z"},"byCountry":[{"countryCode":56,"valueInBaseCurrency":"1680000.00","assetCount":7},{"countryCode":840,"valueInBaseCurrency":"770000.50","assetCount":5}],"totalTokenFactories":2,"tokenFactoryBreakdown":[{"tokenFactoryId":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","tokenFactoryName":"Northwind Coffee Bond Factory","tokenFactoryTypeId":"bond","assetType":"bond","tokenBalancesCount":4,"percentage":48.5,"totalValue":"1188250.25"}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the caller's current holdings split by factory, type, class, and issuing country. The v1 body also includes a per-factory breakdown. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read portfolio holdings breakdown","x-dalp-auth":"api-key"}},"/api/v1/system/stats/system-value-history/by-preset/{preset}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/systemValueHistoryByPreset","parameters":[{"name":"preset","in":"path","schema":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested named window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsSystemValueHistoryOutput"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalValueInBaseCurrency":2210000},{"timestamp":"2026-02-25T00:00:00.000Z","totalValueInBaseCurrency":2365400},{"timestamp":"2026-03-11T23:59:59.000Z","totalValueInBaseCurrency":2450000.5}],"conversionReliable":true}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the total value of every token in the active system over the preset window. The path names a range preset such as `trailing1Month` or `ytd`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read system value history for a range preset","x-dalp-auth":"api-key"}},"/api/v1/system/stats/system-value-history/by-range":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/systemValueHistoryByRange","parameters":[{"name":"interval","in":"query","schema":{"type":"string","enum":["hour","day"],"description":"Bucket size for the series. Use `hour` for short windows and `day` for longer ones.","examples":["day","hour"]},"required":true},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested from/to window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsSystemValueHistoryOutput_1"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalValueInBaseCurrency":2210000},{"timestamp":"2026-02-25T00:00:00.000Z","totalValueInBaseCurrency":2365400},{"timestamp":"2026-03-11T23:59:59.000Z","totalValueInBaseCurrency":2450000.5}],"conversionReliable":true}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the total value of every token in the active system over the requested window. Send `interval` as `hour` or `day`, plus `from` and `to` as UTC timestamps. `from` must be on or before `to`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read system value history for a custom range","x-dalp-auth":"api-key"}},"/api/v1/system/stats/topic-scheme-claims-coverage":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/topicSchemeClaimsCoverage","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the active system.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTopicSchemeClaimsCoverageOutput"},"examples":{"example-1":{"value":{"totalActiveTopicSchemes":4,"missingTopics":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc303078616363726564","topicId":"69879","name":"accreditedInvestor","signature":"uint256 claimIssuedAt","registry":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"isGlobal":false}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns enabled topic schemes that currently have no active claims. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read topic-scheme claim coverage","x-dalp-auth":"api-key"}},"/api/v1/system/stats/topic-schemes-stats-state":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/topicSchemesStatsState","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the active system.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTopicSchemesStatsStateOutput"},"examples":{"example-1":{"value":{"totalRegisteredTopicSchemes":5,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns registered, active, and removed topic-scheme totals for the active system. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read current topic-scheme totals","x-dalp-auth":"api-key"}},"/api/v1/system/stats/topic-schemes-stats/by-preset/{preset}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/topicSchemesStatsByPreset","parameters":[{"name":"preset","in":"path","schema":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested named window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTopicSchemesStatsOutput"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalRegisteredTopicSchemes":4,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":0},{"timestamp":"2026-03-11T23:59:59.000Z","totalRegisteredTopicSchemes":5,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":1}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns registered, active, and removed topic-scheme counts, bucketed by the preset interval. The path names a range preset such as `trailing1Month` or `ytd`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read topic-scheme totals for a range preset","x-dalp-auth":"api-key"}},"/api/v1/system/stats/topic-schemes-stats/by-range":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/topicSchemesStatsByRange","parameters":[{"name":"interval","in":"query","schema":{"type":"string","enum":["hour","day"],"description":"Bucket size for the series. Use `hour` for short windows and `day` for longer ones.","examples":["day","hour"]},"required":true},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested from/to window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTopicSchemesStatsOutput_1"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalRegisteredTopicSchemes":4,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":0},{"timestamp":"2026-03-11T23:59:59.000Z","totalRegisteredTopicSchemes":5,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":1}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns registered, active, and removed topic-scheme counts, bucketed by the requested interval. Send `interval` as `hour` or `day`, plus `from` and `to` as UTC timestamps. `from` must be on or before `to`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read topic-scheme totals for a custom range","x-dalp-auth":"api-key"}},"/api/v1/system/stats/transaction-count":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/transactionCount","parameters":[{"name":"timeRange","in":"query","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the supplied query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTransactionCountOutput"},"examples":{"example-1":{"value":{"totalTransactions":1842,"recentTransactions":63,"timeRangeDays":7}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns transfer-event totals for the active system. `timeRangeDays` defaults to 7 and accepts 1 to 365. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read transaction counts","x-dalp-auth":"api-key"}},"/api/v1/system/stats/transaction-history":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/transactionHistory","parameters":[{"name":"timeRange","in":"query","schema":{"type":"number"},"required":false}],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the supplied query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTransactionHistoryOutput"},"examples":{"example-1":{"value":{"totalTransactions":1842,"recentTransactions":63,"transactionHistory":[{"timestamp":"2026-02-11T00:00:00.000Z","transactions":21},{"timestamp":"2026-02-25T00:00:00.000Z","transactions":28},{"timestamp":"2026-03-11T23:59:59.000Z","transactions":14}],"timeRangeDays":7}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns transfer-event totals plus a daily series for the requested window. `timeRangeDays` defaults to 7 and accepts 1 to 365. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read transaction history","x-dalp-auth":"api-key"}},"/api/v1/system/stats/trusted-issuer-stats-state":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/trustedIssuerStatsState","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the active system.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTrustedIssuerStatsStateOutput"},"examples":{"example-1":{"value":{"totalAddedTrustedIssuers":6,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns added, active, and removed trusted-issuer totals for the active system. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read current trusted-issuer totals","x-dalp-auth":"api-key"}},"/api/v1/system/stats/trusted-issuer-stats/by-preset/{preset}":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/trustedIssuerStatsByPreset","parameters":[{"name":"preset","in":"path","schema":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested named window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTrustedIssuerStatsOutput"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalAddedTrustedIssuers":5,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":0},{"timestamp":"2026-03-11T23:59:59.000Z","totalAddedTrustedIssuers":6,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":1}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns added, active, and removed trusted-issuer counts, bucketed by the preset interval. The path names a range preset such as `trailing1Month` or `ytd`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read trusted-issuer totals for a range preset","x-dalp-auth":"api-key"}},"/api/v1/system/stats/trusted-issuer-stats/by-range":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/trustedIssuerStatsByRange","parameters":[{"name":"interval","in":"query","schema":{"type":"string","enum":["hour","day"],"description":"Bucket size for the series. Use `hour` for short windows and `day` for longer ones.","examples":["day","hour"]},"required":true},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":true}],"responses":{"200":{"description":"Indexed time series for the requested from/to window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTrustedIssuerStatsOutput_1"},"examples":{"example-1":{"value":{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalAddedTrustedIssuers":5,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":0},{"timestamp":"2026-03-11T23:59:59.000Z","totalAddedTrustedIssuers":6,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":1}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns added, active, and removed trusted-issuer counts, bucketed by the requested interval. Send `interval` as `hour` or `day`, plus `from` and `to` as UTC timestamps. `from` must be on or before `to`. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read trusted-issuer totals for a custom range","x-dalp-auth":"api-key"}},"/api/v1/system/stats/value":{"get":{"tags":["Activity and statistics"],"operationId":"v1/system/stats/value","parameters":[],"responses":{"200":{"description":"Indexed snapshot of the requested statistic for the active system.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsValueOutput"},"examples":{"example-1":{"value":{"totalValue":"2450000.50","conversionReliable":true}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12252","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0681"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A precondition on the request was not met","data":{"id":"DALP-0681","why":"The `If-Match` or `If-None-Match` condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against.","fix":"Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12250","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the current total value of tokens in the active system, as a decimal string in the organization base currency. Statistics are indexed snapshots. A just-settled transaction appears only after the indexer catches up. The call is a read and is safe to retry.","summary":"Read current system value","x-dalp-auth":"api-key"}},"/api/v1/token/{tokenAddress}/documents/upload-url":{"post":{"tags":["Token documents"],"operationId":"v1/token/documents/getUploadUrl","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Short-lived upload URL. PUT the file to `uploadUrl`, then confirm the upload with the returned `objectKey`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDocumentGetUploadUrlOutput"},"examples":{"example-1":{"value":{"uploadUrl":"https://files.example.com/uploads/token-documents?signature=nwcab","objectKey":"tokens/0x71C7656EC7ab88b098defB751B7401B5f6d8976F/documents/7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41.pdf","expiresAt":"2026-03-11T16:17:08.000Z","method":"PUT","headers":{"content-type":"application/pdf"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0324","DALP-0327","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0322","DALP-0323","DALP-0326","DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Document group not found for replacement","data":{"id":"DALP-0322","why":"The `replaceGroupId` supplied in the request does not match any existing document group for this token. No document with that group ID and `isLatest=true` exists in the platform records.","fix":"Confirm the `replaceGroupId` by listing the token's current documents, then resubmit with a valid group ID.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12131"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The brand logo upload was rejected","data":{"id":"DALP-12131","why":"The brand logo upload does not meet the issued-token image rules: the token is external, or the file is not a PNG, JPEG or WebP of at most 5 MB and 2048 px a side, or its stored bytes differ from the declaration.","fix":"Upload a PNG, JPEG or WebP of at most 5 MB and 2048 px a side for a token this organization issued, then confirm it with its real size and type.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0321","DALP-0325","DALP-0339","DALP-12307","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a short-lived upload URL and object key for a new document on the selected token in the active organization. This route writes no on-chain state. Upload the file with PUT to the returned URL, then confirm the object key. The URL expires; request a new one instead of retrying an expired URL.","summary":"Create a token document upload URL","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDocumentGetUploadUrlBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/documents":{"post":{"tags":["Token documents"],"operationId":"v1/token/documents/confirmUpload","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Document record after the uploaded file is confirmed. The file is now attached to the token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDocumentConfirmUploadOutput"},"examples":{"example-1":{"value":{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","tokenAddress":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","documentType":"prospectus","visibility":"holders","groupId":"a1b2c3d4-5e6f-7081-92a3-b4c5d6e7f809","versionNumber":1,"isLatest":true,"fileName":"northwind-series-a-prospectus.pdf","fileSize":184320,"mimeType":"application/pdf","title":"Series A prospectus","description":"Offering memorandum for the Northwind Coffee Series A bond.","uploadedAt":"2026-03-04T09:12:41.000Z","fileHash":"0x4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a","uploadedBy":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0324","DALP-0327","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0322","DALP-0323","DALP-0326","DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Document group not found for replacement","data":{"id":"DALP-0322","why":"The `replaceGroupId` supplied in the request does not match any existing document group for this token. No document with that group ID and `isLatest=true` exists in the platform records.","fix":"Confirm the `replaceGroupId` by listing the token's current documents, then resubmit with a valid group ID.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12131"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The brand logo upload was rejected","data":{"id":"DALP-12131","why":"The brand logo upload does not meet the issued-token image rules: the token is external, or the file is not a PNG, JPEG or WebP of at most 5 MB and 2048 px a side, or its stored bytes differ from the declaration.","fix":"Upload a PNG, JPEG or WebP of at most 5 MB and 2048 px a side for a token this organization issued, then confirm it with its real size and type.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0321","DALP-0325","DALP-0339","DALP-12307","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Registers a file already uploaded to the object key returned by the upload-URL route for this token. Confirmation is required before the document appears on token document reads. This route writes object-store metadata, not an on-chain transaction. Retrying a confirmed key does not create a second document.","summary":"Confirm a token document upload","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDocumentConfirmUploadBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"},"get":{"tags":["Token documents"],"operationId":"v1/token/documents/list","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"documentType","in":"query","schema":{"type":"string","enum":["prospectus","term_sheet","legal_opinion","regulatory_filing","compliance_report","annual_report","financial_statement","credit_rating","covenant_agreement","shareholder_agreement","fund_fact_sheet","subscription_agreement","nav_report","reserve_audit","attestation_report","reserve_composition","certificate","interest_schedule","property_deed","survey_report","appraisal","environmental_assessment","title_insurance","assay_certificate","storage_receipt","chain_of_custody","insurance_certificate","brand_logo","other"],"description":"Document type to include, such as prospectus. Omit to return every type.","examples":["prospectus"]},"required":false},{"name":"visibility","in":"query","schema":{"type":"string","enum":["public","holders","restricted"],"description":"Visibility to include: public, holders, or restricted. Omit to return every visibility.","examples":["holders"]},"required":false}],"responses":{"200":{"description":"Documents attached to the token. The list is indexed metadata only. Request a download URL when you need the file.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDocumentListV1Output"},"examples":{"example-1":{"value":{"items":[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","tokenAddress":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","documentType":"prospectus","visibility":"holders","groupId":"a1b2c3d4-5e6f-7081-92a3-b4c5d6e7f809","versionNumber":1,"isLatest":true,"fileName":"northwind-series-a-prospectus.pdf","fileSize":184320,"mimeType":"application/pdf","title":"Series A prospectus","description":"Offering memorandum for the Northwind Coffee Series A bond.","uploadedAt":"2026-03-04T09:12:41.000Z","fileHash":"0x4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a","uploadedBy":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}],"total":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0324","DALP-0327","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0322","DALP-0323","DALP-0326","DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Document group not found for replacement","data":{"id":"DALP-0322","why":"The `replaceGroupId` supplied in the request does not match any existing document group for this token. No document with that group ID and `isLatest=true` exists in the platform records.","fix":"Confirm the `replaceGroupId` by listing the token's current documents, then resubmit with a valid group ID.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0321","DALP-0325","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns documents attached to the selected token, optionally filtered by type and visibility. The list is indexed metadata only and does not download file bytes. Request a download URL when you need the file. Repeat the same request to refresh the list.","summary":"List token documents","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/documents/{documentId}":{"delete":{"tags":["Token documents"],"operationId":"v1/token/documents/delete","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"documentId","in":"path","schema":{"type":"string","minLength":1},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Result of deleting one token document. `deleted` is true when the document is gone.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDocumentDeleteOutput"},"examples":{"example-1":{"value":{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","deleted":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0324","DALP-0327","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0322","DALP-0323","DALP-0326","DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Document group not found for replacement","data":{"id":"DALP-0322","why":"The `replaceGroupId` supplied in the request does not match any existing document group for this token. No document with that group ID and `isLatest=true` exists in the platform records.","fix":"Confirm the `replaceGroupId` by listing the token's current documents, then resubmit with a valid group ID.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0321","DALP-0325","DALP-0339","DALP-12307","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes one document from the selected token in the active organization. A missing document returns 404. This route writes object-store metadata, not an on-chain transaction. Deleting does not roll back earlier versions in the same group.","summary":"Delete a token document","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/grant-role":{"post":{"tags":["Token controls"],"operationId":"v1/token/grantRole","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accounts that received the requested role grant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenGrantRoleOutput"},"examples":{"example-1":{"value":{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-12342","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12340","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12341","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Grants one or more access-control roles on the selected token in the active organization. Send either one role for many accounts, or many roles for one account. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the accounts that received the role.","summary":"Grant token roles","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenGrantRoleBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/revoke-role":{"delete":{"tags":["Token controls"],"operationId":"v1/token/revokeRole","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Accounts that received the requested role grant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRevokeRoleOutput"},"examples":{"example-1":{"value":{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-12342","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12340","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12341","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Revokes one or more access-control roles on the selected token in the active organization. The last administrator cannot be revoked. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Revoke token roles","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenGrantRoleBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/grant-role-by-participant":{"post":{"tags":["Token controls"],"operationId":"v1/token/grantRoleByParticipant","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Wallets and roles that the participant-scoped grant or revoke applied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenGrantRoleByParticipantOutput"},"examples":{"example-1":{"value":{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"],"roles":["custodian"]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-12342","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12340","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12341","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Grants a token role to the wallets resolved for one participant on the selected token in the active organization. Name the participant by id or identity address. The platform checks the indexed token and participant first, then submits a live chain transaction. This route waits for settlement.","summary":"Grant a token role by participant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenGrantRoleByParticipantBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/revoke-role-by-participant":{"post":{"tags":["Token controls"],"operationId":"v1/token/revokeRoleByParticipant","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Wallets and roles that the participant-scoped grant or revoke applied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRevokeRoleByParticipantOutput"},"examples":{"example-1":{"value":{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"],"roles":["custodian"]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-12342","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12340","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12341","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Revokes a token role from the wallets resolved for one participant on the selected token in the active organization. The last administrator cannot be revoked. The platform checks the indexed token and participant first, then submits a live chain transaction. This route waits for settlement.","summary":"Revoke a token role by participant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenGrantRoleByParticipantBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/pause":{"put":{"tags":["Token controls"],"operationId":"v1/token/pause","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Pauses transfers on the selected token in the active organization. New transfers fail until the token is unpaused. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token.","summary":"Pause token transfers","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"}},"additionalProperties":false}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/unpause":{"put":{"tags":["Token controls"],"operationId":"v1/token/unpause","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Resumes transfers on the selected token in the active organization after a pause. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token.","summary":"Unpause token transfers","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"}},"additionalProperties":false}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/freeze-address":{"post":{"tags":["Token controls"],"operationId":"v1/token/freezeAddress","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Freezes or unfreezes every unit of the selected token held by one address in the active organization. `freeze` true locks the address; false unlocks it. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Update an address freeze","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"userAddress":{"$ref":"#/components/schemas/EvmAddress"},"freeze":{"type":"boolean","description":"True freezes every unit the address holds. False unfreezes the address.","examples":[true]}},"required":["userAddress","freeze"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/freeze-partial":{"post":{"tags":["Token controls"],"operationId":"v1/token/freezePartial","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Locks a positive amount of one holder's balance of the selected token so that amount cannot be spent. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Freeze a partial token balance","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"userAddress":{"$ref":"#/components/schemas/EvmAddress"},"amount":{"$ref":"#/components/schemas/AssetAmount_1"}},"required":["userAddress","amount"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/unfreeze-partial":{"post":{"tags":["Token controls"],"operationId":"v1/token/unfreezePartial","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Unlocks a positive amount of one holder's previously frozen balance of the selected token. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Unfreeze a partial token balance","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"userAddress":{"$ref":"#/components/schemas/EvmAddress"},"amount":{"$ref":"#/components/schemas/AssetAmount_2"}},"required":["userAddress","amount"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/set-cap":{"put":{"tags":["Token controls"],"operationId":"v1/token/setCap","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Replaces the maximum supply the selected token may mint. The new cap must be at least the current total supply. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Set the token supply cap","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"newCap":{"$ref":"#/components/schemas/AssetAmount_3"}},"required":["newCap"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token":{"get":{"tags":["Tokens"],"operationId":"v1/token/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string"},"required":false},{"name":"tokenFactory","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false}],"responses":{"200":{"description":"Frozen v1 token list. `totalCount` is the number of matching tokens, not only the ones in `tokens`. `claims` is always an empty array on this list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenListResponseSchemaV1"},"examples":{"example-1":{"value":{"tokens":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0","type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"[\"10000\",2]","basePriceCurrencyCode":"EUR","totalSupply":"[\"250000000\",2]","totalSupplyExact":"2500000000000000000000000","smartInterface":2,"pausable":{"paused":false},"assetClassificationType":"bond","assetClassificationCategory":"corporate","uniqueIdentifier":"BE0003796134","templateLink":{"templateId":"tmpl_northwind_series_a","templateSlug":"corporate-bond"},"structure":null,"isConfigurable":true,"hasVotingPower":false,"claims":[]}],"totalCount":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0646","DALP-0647","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9289","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every token visible in the active organization, optionally restricted to one factory. This is the frozen v1 catalog, not a live chain probe. Use `tokenFactory` when the organization has more than one factory. Repeat the same query to refresh the list. For paged catalog work, prefer the v2 token list.","summary":"List tokens","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/search":{"get":{"tags":["Tokens"],"operationId":"v1/token/search","parameters":[{"name":"query","in":"query","schema":{"type":"string","minLength":1,"description":"Lookup text. Matches token name or symbol as a case-insensitive partial, or a contract address exactly.","examples":["NWCAB","Northwind","0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"limit","in":"query","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"Short lookup list of matching tokens. The array is not paged. Use the token read for the full record of one address.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TokenSearchResult_1"},"description":"Short lookup list of matching tokens. The array is not paged. Use the token read for the full record of one address.","examples":[[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":{"id":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0"},"type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"EUR","totalSupply":"2500000.00","totalSupplyExact":"2500000000000000000000000","smartInterface":2,"pausable":{"paused":false},"templateLink":{"templateId":"tmpl_northwind_series_a","templateSlug":"corporate-bond"}}]]},"examples":{"example-1":{"value":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":{"id":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0"},"type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"EUR","totalSupply":"2500000.00","totalSupplyExact":"2500000000000000000000000","smartInterface":2,"pausable":{"paused":false},"templateLink":{"templateId":"tmpl_northwind_series_a","templateSlug":"corporate-bond"}}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0646","DALP-0647","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9289","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a short lookup list of tokens whose name, symbol, or contract address matches `query`. A valid address matches that token exactly. Text matches are case-insensitive and partial. This is an indexed lookup for typeahead, not a page of the full catalog. Cap the result with `limit`. Repeat the same query to refresh the matches.","summary":"Search tokens","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}":{"get":{"tags":["Tokens"],"operationId":"v1/token/read","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"The selected token as the frozen v1 surface returns it. Amounts are decimal strings in token units. This read is idempotent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token_1"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0","complianceContract":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","identityRegistry":"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9","type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"EUR","totalSupply":"2500000.00","totalSupplyExact":"2500000000000000000000000","extensions":["ACCESS_MANAGED","BOND","CAPPED","REDEEMABLE"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":{"cap":"5000000.00","capExact":"5000000000000000000000000"},"createdBy":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"redeemable":{"redeemedAmount":"0","redeemedAmountExact":"0"},"yield":null,"bond":{"faceValue":"100.00","faceValueExact":"100000000000000000000","isMatured":false,"maturityDate":"2029-03-04T00:00:00.000Z","totalRedeemed":"0","totalRedeemedExact":"0","denominationAsset":{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3","symbol":"EURC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":12,"totalValueInBaseCurrency":"250000000.00","totalBurned":"0","totalBurnedExact":"0"}}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0707","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9323","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the frozen v1 representation of one token visible in the active organization. Identify the token by `tokenAddress`. Amounts are decimal strings in token units. A missing or out-of-scope address returns 404. The read is indexed and does not change token state. Use the v2 token read when you need the single-resource envelope.","summary":"Read a token","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/holder":{"get":{"tags":["Tokens"],"operationId":"v1/token/holder","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"holderAddress","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Balance for one holder. `holder` is null when the address has no indexed balance. Spend checks must read `available`, not `value`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenHolderResponse"},"examples":{"example-1":{"value":{"holder":{"account":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"available":"25000.00","frozen":"0","isFrozen":false,"value":"25000.00","lastUpdatedAt":"2026-03-11T16:02:08.000Z"}}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0707","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9323","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns available, frozen, and total balances for one holder of the selected token. Name the holder as `holderAddress`. Spend checks must read `available`, not `value`. A wallet with no indexed balance returns a null `holder`. The read is indexed and does not change balances.","summary":"Read a token holder","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/holders":{"get":{"tags":["Tokens"],"operationId":"v1/token/holders","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Frozen v1 holder list. `totalCount` is the number of holders, not only the rows in `token.balances`. `token` is null when the token has no indexed holders.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenHoldersResponse"},"examples":{"example-1":{"value":{"token":{"balances":[{"account":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"available":"25000.00","frozen":"0","isFrozen":false,"value":"25000.00","lastUpdatedAt":"2026-03-11T16:02:08.000Z"}]},"totalCount":12}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0707","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9323","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every indexed holder of the selected token plus `totalCount`. Spendable funds are in `available`, not `value`. This frozen v1 list is not paged. Use the v2 holders collection when you need page, filter, or sort. Repeat the same request to refresh the snapshot.","summary":"List token holders","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/allowance":{"get":{"tags":["Tokens"],"operationId":"v1/token/allowance","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"owner","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"spender","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Allowance for one owner and spender. `allowance` is null when no approval is indexed. The read does not change approvals.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenAllowanceResponse"},"examples":{"example-1":{"value":{"allowance":{"id":"9c2e1f44-6a7b-4d8e-91c0-2b3d4e5f6a70","value":"10000.00","valueExact":"10000000000000000000000","lastUpdatedAt":"2026-03-11T16:02:08.000Z","owner":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false},"spender":{"id":"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC","isContract":false}}}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0707","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9323","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the allowance one owner has granted one spender on the selected token. Name both addresses as query parameters. When no allowance is indexed, `allowance` is null. The read is indexed and does not change approvals. Use this value before a spend that depends on the current allowance.","summary":"Read a token allowance","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/events":{"get":{"tags":["Tokens"],"operationId":"v1/token/events","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"eventNames","in":"query","schema":{"type":"array","items":{"type":"string"},"description":"Event names to include, such as Transfer or Mint. Omit to return every indexed event.","examples":[["Transfer","Mint"]]},"required":false},{"name":"senderAddress","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false},{"name":"transactionHashes","in":"query","schema":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Filter events by one or more transaction hashes"},"required":false},{"name":"limit","in":"query","schema":{"type":"integer"},"required":false},{"name":"offset","in":"query","schema":{"type":"integer"},"required":false},{"name":"fromDate","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":false},{"name":"toDate","in":"query","schema":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"required":false},{"name":"walletAddress","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false}],"responses":{"200":{"description":"Frozen v1 event history. Filter by sender, wallet, hash, or date. Do not send both walletAddress and senderAddress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventsResponse"},"examples":{"example-1":{"value":{"events":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3","eventName":"Transfer","txIndex":"3","blockNumber":"21450881","blockTimestamp":"2026-03-04T09:12:41.000Z","transactionHash":"0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24","emitter":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"sender":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"metaTxSigner":null,"displaySender":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"relayerKind":null,"relayer":null,"userOpHash":null,"involved":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}],"values":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3-from","name":"from","value":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3-to","name":"to","value":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3-value","name":"value","value":"25000000000000000000000"}]}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the frozen v1 event history for the selected token. Filter by event name, sender, wallet, transaction hash, or date. Do not send both `walletAddress` and `senderAddress`. The list is indexed. Use `limit` and `offset` to page. Prefer the v2 events collection for JSON:API paging.","summary":"List token events","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/compliance":{"get":{"tags":["Tokens"],"operationId":"v1/token/compliance","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Indexed compliance modules bound to the token, including encoded parameters. v2 modules also include instance address, active flag, and scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenComplianceResponse"},"examples":{"example-1":{"value":{"complianceModuleConfigs":[{"complianceModule":{"typeId":"country-allow-list-v2","tokenConfigs":[{"parameters":{"expression":null,"collateral":null,"tokenSupplyLimit":null,"issuanceVolumeLimit":null,"capitalRaiseLimit":null,"minimumHolding":null,"claimExpiry":null,"investorCount":null,"countries":[56],"addresses":null,"timeLock":null,"transferApproval":null}}]},"instanceAddress":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","isActive":true,"isGlobal":false}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the compliance modules currently bound to the selected token, including encoded parameters for country lists, supply limits, time locks, and transfer approval. The read is indexed and does not change module bindings. Use this before a mint, transfer, or burn that depends on those modules.","summary":"Read token compliance modules","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/denomination-assets":{"get":{"tags":["Tokens"],"operationId":"v1/token/denominationAssets","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Bonds that use the selected token as their denomination. The list is indexed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DenominationAssetList"},"examples":{"example-1":{"value":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"EUR","totalSupply":"2500000.00","totalSupplyExact":"2500000000000000000000000","smartInterface":2,"pausable":{"paused":false},"tokenFactory":{"id":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0"}}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0646","DALP-0647","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9289","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns bonds that use the selected token as their settlement denomination. The list is indexed and is not a live treasury probe. Repeat the same request to refresh the links. Use holdings when you need assets the token itself holds.","summary":"List denomination assets","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/create":{"post":{"tags":["Token creation"],"operationId":"v1/token/create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token_2"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12095","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430","DALP-9563"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0314","DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token factory for type {factoryAddress} not found","data":{"id":"DALP-0314","why":"The platform could not locate a registered token factory for the requested token type, so it cannot proceed with token deployment.","fix":"Verify that the token type and optional factory address are correct, and that the system has completed bootstrapping with a factory for that type.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT","RESOURCE_ALREADY_EXISTS"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0023","DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"RESOURCE_ALREADY_EXISTS","status":409,"message":"Resource already exists","data":{"id":"DALP-0023","why":"The request tried to create or register a resource that already exists.","fix":"Use the existing resource or choose a unique identifier.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0315","DALP-0316","DALP-0447","DALP-12088","DALP-4013","DALP-4014","DALP-4015","DALP-4016","DALP-9073","DALP-9243","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Token creation workflow failed during phase execution","data":{"id":"DALP-0315","why":"The token deployment workflow failed in one of its phases.","fix":"Inspect the phase failure, correct the deployment inputs, and submit a new operation.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0339","DALP-0717","DALP-12038","DALP-12307","DALP-9079","DALP-9259","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Deploys a new token for the active organization on the request chain, using a factory the organization can use. This frozen v1 route waits for settlement and returns the indexed token representation after the indexer drains. It does not stream intermediate phases. A second identical call starts another deployment. Inspect the returned token before you retry. For a DALP asset create, issuanceRun names a member of an accepted issuance run: the member deploys from the reviewed values of that run, and the run records each of its operations as it is submitted and confirmed.","summary":"Create a token","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/UserVerification_4"},"name":{"type":"string","minLength":1,"maxLength":50},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"initialModulePairs":{"$ref":"#/components/schemas/ComplianceModulePairs"},"holderRemovableNot":{"$ref":"#/components/schemas/HolderRemovableNotAcknowledgement"},"type":{"type":"string","enum":["deposit"]},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"initialPermissions":{"$ref":"#/components/schemas/InitialTokenPermissions"},"unpauseOnCreation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateId":{"type":"string","minLength":1},"priceCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"basePrice":{"$ref":"#/components/schemas/BigDecimal"},"termLengthDays":{"type":"integer","exclusiveMinimum":0},"interestRateBps":{"type":"integer","minimum":0,"maximum":100000},"earlyWithdrawalPenaltyBps":{"$ref":"#/components/schemas/FeeRateBps"}},"required":["name","symbol","decimals","countryCode","type","priceCurrency","basePrice"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/UserVerification_4"},"name":{"type":"string","minLength":1,"maxLength":50},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"initialModulePairs":{"$ref":"#/components/schemas/ComplianceModulePairs"},"holderRemovableNot":{"$ref":"#/components/schemas/HolderRemovableNotAcknowledgement"},"type":{"type":"string","enum":["bond"]},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"initialPermissions":{"$ref":"#/components/schemas/InitialTokenPermissions"},"unpauseOnCreation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateId":{"type":"string","minLength":1},"cap":{"$ref":"#/components/schemas/AssetAmount"},"faceValue":{"$ref":"#/components/schemas/AssetAmount"},"maturityDate":{"$ref":"#/components/schemas/TimestampEncoded"},"denominationAsset":{"$ref":"#/components/schemas/EvmAddress"},"uniqueIdentifier":{"type":"string"}},"required":["name","symbol","decimals","countryCode","type","cap","faceValue","denominationAsset"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/UserVerification_4"},"name":{"type":"string","minLength":1,"maxLength":50},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"initialModulePairs":{"$ref":"#/components/schemas/ComplianceModulePairs"},"holderRemovableNot":{"$ref":"#/components/schemas/HolderRemovableNotAcknowledgement"},"type":{"type":"string","enum":["equity"]},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"initialPermissions":{"$ref":"#/components/schemas/InitialTokenPermissions"},"unpauseOnCreation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateId":{"type":"string","minLength":1},"priceCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"basePrice":{"$ref":"#/components/schemas/BigDecimal"},"class":{"$ref":"#/components/schemas/EquityClass"},"category":{"$ref":"#/components/schemas/EquityCategory"},"uniqueIdentifier":{"type":"string"}},"required":["name","symbol","decimals","countryCode","type","priceCurrency","basePrice"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/UserVerification_4"},"name":{"type":"string","minLength":1,"maxLength":50},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"initialModulePairs":{"$ref":"#/components/schemas/ComplianceModulePairs"},"holderRemovableNot":{"$ref":"#/components/schemas/HolderRemovableNotAcknowledgement"},"type":{"type":"string","enum":["fund"]},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"initialPermissions":{"$ref":"#/components/schemas/InitialTokenPermissions"},"unpauseOnCreation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateId":{"type":"string","minLength":1},"priceCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"basePrice":{"$ref":"#/components/schemas/BigDecimal"},"class":{"$ref":"#/components/schemas/FundClass"},"category":{"$ref":"#/components/schemas/FundCategory"},"managementFeeBps":{"$ref":"#/components/schemas/FeeRateBps"},"uniqueIdentifier":{"type":"string"}},"required":["name","symbol","decimals","countryCode","type","priceCurrency","basePrice","managementFeeBps"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/UserVerification_4"},"name":{"type":"string","minLength":1,"maxLength":50},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"initialModulePairs":{"$ref":"#/components/schemas/ComplianceModulePairs"},"holderRemovableNot":{"$ref":"#/components/schemas/HolderRemovableNotAcknowledgement"},"type":{"type":"string","enum":["stablecoin"]},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"initialPermissions":{"$ref":"#/components/schemas/InitialTokenPermissions"},"unpauseOnCreation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateId":{"type":"string","minLength":1},"priceCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"basePrice":{"$ref":"#/components/schemas/BigDecimal"},"collateralRatioBps":{"anyOf":[{"type":"integer","minimum":0,"maximum":20000},{"type":"null"}]},"pegMechanism":{"type":"string","enum":["fiat-backed","crypto-backed","algorithmic","commodity-backed"]},"reserveDescription":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"null"}]}},"required":["name","symbol","decimals","countryCode","type","priceCurrency","basePrice"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/UserVerification_4"},"name":{"type":"string","minLength":1,"maxLength":50},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"initialModulePairs":{"$ref":"#/components/schemas/ComplianceModulePairs"},"holderRemovableNot":{"$ref":"#/components/schemas/HolderRemovableNotAcknowledgement"},"type":{"type":"string","enum":["real-estate"]},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"initialPermissions":{"$ref":"#/components/schemas/InitialTokenPermissions"},"unpauseOnCreation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateId":{"type":"string","minLength":1},"uniqueIdentifier":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"null"}]},"propertyType":{"$ref":"#/components/schemas/RealEstatePropertyType"},"propertyUse":{"$ref":"#/components/schemas/RealEstatePropertyUse"},"city":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"null"}]},"districtCode":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"null"}]},"realEstateAreaId":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"null"}]},"priceCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"basePrice":{"$ref":"#/components/schemas/BigDecimal"},"maximumFractions":{"$ref":"#/components/schemas/AssetAmount"},"premintRecipient":{"$ref":"#/components/schemas/EvmAddress"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"propertyArea":{"type":"number","exclusiveMinimum":0},"buildingYear":{"type":"integer","minimum":1000,"maximum":2100},"numberOfUnits":{"type":"integer","exclusiveMinimum":0}},"required":["name","symbol","decimals","countryCode","type","priceCurrency","basePrice","maximumFractions","premintRecipient"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/UserVerification_4"},"name":{"type":"string","minLength":1,"maxLength":50},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"initialModulePairs":{"$ref":"#/components/schemas/ComplianceModulePairs"},"holderRemovableNot":{"$ref":"#/components/schemas/HolderRemovableNotAcknowledgement"},"type":{"type":"string","enum":["precious-metal"]},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"initialPermissions":{"$ref":"#/components/schemas/InitialTokenPermissions"},"unpauseOnCreation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateId":{"type":"string","minLength":1},"metalType":{"type":"string","enum":["gold","silver","platinum","palladium"]},"purityGrade":{"type":"string","enum":["999.9","999.5","999","995","990","958","916","900","750"]},"vaultLocation":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"null"}]},"custodian":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"null"}]},"weightUnit":{"type":"string","enum":["gram","troyOunce","kilogram"]},"weightPerToken":{"$ref":"#/components/schemas/BigDecimal"},"priceCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"spotPricePerUnit":{"$ref":"#/components/schemas/BigDecimal"}},"required":["name","symbol","decimals","countryCode","type","metalType","weightUnit","weightPerToken","priceCurrency","spotPricePerUnit"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/UserVerification_4"},"name":{"type":"string","minLength":1,"maxLength":50},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"initialModulePairs":{"$ref":"#/components/schemas/ComplianceModulePairs"},"holderRemovableNot":{"$ref":"#/components/schemas/HolderRemovableNotAcknowledgement"},"type":{"type":"string","enum":["dalp-asset"]},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"initialPermissions":{"$ref":"#/components/schemas/InitialTokenPermissions"},"unpauseOnCreation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateId":{"type":"string","minLength":1},"complianceTemplateSelection":{"type":"string"},"complianceTemplateExpectedTypeIds":{"type":"array","items":{"$ref":"#/components/schemas/ComplianceTypeId_2"}},"priceCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"basePrice":{"$ref":"#/components/schemas/BigDecimal"},"metadataValues":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}},"featureConfigs":{"anyOf":[{"$ref":"#/components/schemas/TokenFeatureConfigsInput"},{"type":"null"}]},"issuanceRun":{"$ref":"#/components/schemas/IssuanceRunMemberSelector"}},"required":["name","symbol","decimals","countryCode","type","templateId"],"additionalProperties":false}],"description":"Create payload for a token the active organization can deploy. Required fields depend on the asset type. The example is a deposit token."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/redeem":{"post":{"tags":["Token lifecycle"],"operationId":"v1/token/redeem","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0353","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12021","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Redeems units of the selected token against the denomination asset for the named holder, or for the caller when `owner` is omitted. Send `amount` or set `redeemAll` to true. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token. Redemption requires a custodian when the token is configured that way.","summary":"Redeem tokens","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"owner":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Token holder to redeem for. Omit to redeem for the caller.","examples":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"]},"amount":{"anyOf":[{"$ref":"#/components/schemas/AssetAmount_4"},{"type":"null"}]},"redeemAll":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false,"description":"Redeem token units against the denomination asset. Send amount, or set redeemAll to true. Omit owner to redeem for the caller. The token address is taken from the path.","examples":[{"owner":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","amount":"5000000000000000000000","redeemAll":false,"walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"}}]}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/mature":{"put":{"tags":["Token lifecycle"],"operationId":"v1/token/mature","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0353","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12021","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Marks a legacy bond as matured so holders can redeem the selected token in the active organization. The token must already be eligible to mature. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Mature a legacy bond token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenLifecycleMutationBody"}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/set-yield-schedule":{"put":{"tags":["Token lifecycle"],"operationId":"v1/token/setYieldSchedule","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Attaches or replaces the yield schedule contract the selected token uses. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token.","summary":"Set the token yield schedule","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenSetYieldScheduleBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/forced-recover":{"post":{"tags":["Token lifecycle"],"operationId":"v1/token/forcedRecover","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Moves the selected token from a lost address to a recovery destination. The caller must hold a custodian recovery role. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Force recover tokens","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"lostWallet":{"$ref":"#/components/schemas/EvmAddress"},"newWallet":{"$ref":"#/components/schemas/EvmAddress"}},"required":["lostWallet","newWallet"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/recover-erc20":{"post":{"tags":["Token lifecycle"],"operationId":"v1/token/recoverERC20","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-12094","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9079","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Recovers ERC-20 denomination or fee tokens held by the selected token contract and sends them to a recipient. The caller must hold an emergency role. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Recover ERC-20 tokens","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"erc20Address":{"$ref":"#/components/schemas/EvmAddress"},"recipient":{"$ref":"#/components/schemas/EvmAddress"},"amount":{"$ref":"#/components/schemas/AssetAmount_5"}},"required":["erc20Address","recipient","amount"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/recover-tokens":{"post":{"tags":["Token lifecycle"],"operationId":"v1/token/recoverTokens","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12025","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Recovers the selected token's own balances from a lost wallet through the token contract recovery path. The caller must hold an emergency role. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement.","summary":"Recover token balances","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"lostWallet":{"$ref":"#/components/schemas/EvmAddress"}},"required":["lostWallet"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/claim/issue":{"post":{"tags":["Token lifecycle"],"operationId":"v1/token/claimIssue","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Settled claim-issue result for the token identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenClaimIssueOutput"},"examples":{"example-1":{"value":{"success":true,"txHash":"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","claimTopic":"uniqueIdentifier","targetIdentity":"0x90F79bf6EB2c4f870365E785982E1f101E93b906"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12020","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12032","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Issues an identity claim against the selected token's on-chain identity, using a topic registered for the active system. The payload must match the registered scheme. The platform checks the indexed token and topic scheme first, then submits a live chain transaction. This route waits for settlement.","summary":"Issue a token claim","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenClaimIssueBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/claim/revoke":{"post":{"tags":["Token lifecycle"],"operationId":"v1/token/claimRevoke","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Settled claim-revoke result for the token identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenClaimRevokeOutput"},"examples":{"example-1":{"value":{"success":true,"txHash":"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","claimId":"0x1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12020","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12032","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Revokes a previously issued identity claim on the selected token's on-chain identity. The platform checks the indexed token and topic first, then submits a live chain transaction. This route waits for settlement.","summary":"Revoke a token claim","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenClaimRevokeBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/update-collateral":{"put":{"tags":["Token lifecycle"],"operationId":"v1/token/updateCollateral","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12020","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12032","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Updates the collateral amount recorded on the selected token's identity. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token.","summary":"Update token collateral","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenUpdateCollateralBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/actions":{"get":{"tags":["Actions"],"operationId":"v1/token/actions","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"status","in":"query","schema":{"type":"string","enum":["PENDING","UPCOMING","EXECUTED","EXPIRED"],"description":"Filter actions by their current status","examples":["PENDING","EXECUTED"]},"required":false},{"name":"targets","in":"query","schema":{"type":"array","items":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"description":"Filter actions by their target addresses"},"required":false},{"name":"name","in":"query","schema":{"type":"string","description":"Filter actions by their name","examples":["Transfer Approval","KYC Update"]},"required":false},{"name":"actionType","in":"query","schema":{"type":"string","enum":["MatureBond","RedeemBond","ClaimYield","ClaimDividend","ApproveMaturityAllowance","ApproveYieldAllowance","ApproveXvPSettlement","ExecuteXvPSettlement","UpdateKYCData","MultisigApproval","custody-pending","CheckerApproval","CastVote","CastPollBallot","ActivateVotingPower","MultisigInvite"],"description":"Filter actions by canonical action type","examples":["ClaimYield","ApproveXvPSettlement"]},"required":false}],"responses":{"200":{"description":"Every action the caller can execute that matches the v1 filters. There is no pagination envelope on this frozen surface.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionsListResponseV1"},"examples":{"example-1":{"value":[{"id":"xvp-approve:0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","actionType":"ApproveXvPSettlement","name":"Approve Northwind Series A settlement","target":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","tokenAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","activeAt":"2026-03-15T09:12:41.000Z","status":"PENDING","executedAt":null,"executedBy":null,"expiresAt":"2026-04-20T16:00:00.000Z","source":"on-chain","executor":{"id":"executor:northwind-treasury","executors":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]}}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-12253","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-0671","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0735","DALP-12307","DALP-9260"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the frozen v1 actions that target the token named in the path. Only actions the authenticated caller can execute are included, and each row carries the v1 `executor` object. Filter by `status`, `actionType`, `name`, or `targets`. There is no pagination envelope on this frozen surface. Repeating the request is safe.","summary":"List every action for a token","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/approve":{"post":{"tags":["Token transfers and supply"],"operationId":"v1/token/approve","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token_2"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Sets the allowance the selected owner grants one spender on this token in the active organization. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token. A second identical call submits another approval.","summary":"Approve token spending","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_5"},"spender":{"$ref":"#/components/schemas/EvmAddress"},"amount":{"$ref":"#/components/schemas/AssetAmount_7"}},"required":["spender","amount"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/mint":{"post":{"tags":["Token transfers and supply"],"operationId":"v1/token/mint","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token_2"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430","DALP-9484"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12067","DALP-12195","DALP-12196","DALP-9077","DALP-9086","DALP-9433","DALP-9482","DALP-9483"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Mints new token units to one or more addresses on the selected token in the active organization. Recipients and amounts must have the same length. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token. Minting is rejected while supply is paused or closed, or while a composition Corporate Action is in flight.","summary":"Mint tokens","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_5"},"recipients":{"$ref":"#/components/schemas/TokenSupplyMutationAddressInput"},"amounts":{"$ref":"#/components/schemas/TokenSupplyMutationAmountInput"}},"required":["recipients","amounts"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/burn":{"delete":{"tags":["Token transfers and supply"],"operationId":"v1/token/burn","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token_2"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12067","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482","DALP-9483"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0447","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Transaction queue could not complete the operation","data":{"id":"DALP-0447","why":"The transaction failed on-chain without a revert reason the API can decode, the sending smart wallet cannot fund it, or the queue rejected its input.","fix":"Check the operation input, the current contract and token state, and the funds of the sending wallet, then retry with a new idempotency key.","retryable":false,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Burns token units from one or more addresses on the selected token in the active organization. Addresses and amounts must have the same length. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token. Burning is rejected while supply is paused, the source has too little spendable balance, or a composition Corporate Action is in flight.","summary":"Burn tokens","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_5"},"addresses":{"$ref":"#/components/schemas/TokenSupplyMutationAddressInput_1"},"amounts":{"$ref":"#/components/schemas/TokenSupplyMutationAmountInput_1"}},"required":["addresses","amounts"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/stats/bond-status":{"get":{"tags":["Token statistics"],"operationId":"v1/token/statsBondStatus","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Indexed bond solvency snapshot. When `solvencyKnown` is false, hide approve and redeem actions until the indexer catches up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsBondStatusOutput"},"examples":{"example-1":{"value":{"denominationAssetBalanceAvailable":"240000000.00","denominationAssetBalanceRequired":"250000000.00","coveredPercentage":"96.00","denominationAssetTreasuryAllowance":"250000000.00","allowanceCoveredPercentage":"100.00","treasuryIsContract":false,"treasuryAddress":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","featureAddress":"0x8A791620dd6260079BF849Dc5567aDC3F2FdC318","solvencyKnown":true}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns denomination-asset coverage, treasury allowance, and solvency readiness for the selected bond. `solvencyKnown` is false while the indexer has not computed the row; do not treat those zeros as an empty treasury. The read is indexed. Repeat the same request after a treasury approval to refresh the snapshot.","summary":"Read token bond status","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/stats/{tokenAddress}/collateral-ratio":{"get":{"tags":["Token statistics"],"operationId":"v1/token/statsCollateralRatio","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Indexed collateral coverage. Use `mintableSupply` before a mint that depends on remaining capacity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsCollateralRatioOutput"},"examples":{"example-1":{"value":{"buckets":[{"name":"available","value":"1250000.00"},{"name":"used","value":"250000.00"}],"totalCollateral":"1250000.00","requiredCollateral":"250000.00","mintableSupply":"10000000.00","collateralizationPercentage":500,"configuredCollateralRatioBps":2500}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns current collateral coverage for the selected token: available and required collateral, mintable supply, and the configured ratio in basis points. The read is indexed. Use this before a mint that depends on remaining collateral capacity.","summary":"Read token collateral ratio","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/stats/{tokenAddress}/supply-changes":{"get":{"tags":["Token statistics"],"operationId":"v1/token/statsSupplyChanges","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"days","in":"query","schema":{},"required":false}],"responses":{"200":{"description":"Indexed mint and burn series for the requested day window. This is not a live chain probe.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsSupplyChangesOutput"},"examples":{"example-1":{"value":{"supplyChangesHistory":[{"timestamp":"2026-03-04T09:12:41.000Z","totalMinted":"2500000.00","totalBurned":"0"},{"timestamp":"2026-03-11T16:02:08.000Z","totalMinted":"2500000.00","totalBurned":"0"}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns indexed mint and burn totals for the selected token over the requested day window. `days` defaults to 30 and may be 1 to 365. Use the series to chart issuance and burns. Repeat the same request to refresh the window.","summary":"Read token supply changes","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/stats/{tokenAddress}/total-supply":{"get":{"tags":["Token statistics"],"operationId":"v1/token/statsTotalSupply","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"days","in":"query","schema":{},"required":false}],"responses":{"200":{"description":"Indexed total-supply series for the requested day window. This is not the live `totalSupply` on the token contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsTotalSupplyOutput"},"examples":{"example-1":{"value":{"totalSupplyHistory":[{"timestamp":"2026-03-04T09:12:41.000Z","totalSupply":"2500000.00"},{"timestamp":"2026-03-11T16:02:08.000Z","totalSupply":"2500000.00"}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns indexed total-supply points for the selected token over the requested day window. `days` defaults to 30 and may be 1 to 365. This is a chart series, not the live `totalSupply` on the token contract. Repeat the same request to refresh the window.","summary":"Read token total supply","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/stats/{tokenAddress}/volume":{"get":{"tags":["Token statistics"],"operationId":"v1/token/statsVolume","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"days","in":"query","schema":{},"required":false}],"responses":{"200":{"description":"Indexed transfer-volume series for the requested day window. This is not a live chain probe.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsVolumeOutput"},"examples":{"example-1":{"value":{"volumeHistory":[{"timestamp":"2026-03-04T09:12:41.000Z","totalVolume":"0"},{"timestamp":"2026-03-11T16:02:08.000Z","totalVolume":"125000.00"}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns indexed transfer-volume points for the selected token over the requested day window. `days` defaults to 30 and may be 1 to 365. Use the series to chart settled transfer volume. Repeat the same request to refresh the window.","summary":"Read token volume","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/stats/{tokenAddress}/wallet-distribution":{"get":{"tags":["Token statistics"],"operationId":"v1/token/statsWalletDistribution","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Indexed holder-count buckets. `totalHolders` is the full holder count. Use the holders list when you need each wallet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsWalletDistributionOutput"},"examples":{"example-1":{"value":{"buckets":[{"range":"0-1000","count":4},{"range":"1000-10000","count":6},{"range":"10000+","count":2}],"totalHolders":12}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns indexed holder-count buckets for the selected token, ordered from smallest holdings to largest. `totalHolders` is the full holder count, not the bucket count. Use the holders list when you need each wallet.","summary":"Read token wallet distribution","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/stats/yield-coverage":{"get":{"tags":["Token statistics"],"operationId":"v1/token/statsYieldCoverage","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Indexed treasury coverage for the token yield schedule. Use `scheduleAbsenceReason` to tell a missing schedule from an indexing delay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsYieldCoverageOutput"},"examples":{"example-1":{"value":{"yieldCoverage":112.5,"hasYieldSchedule":true,"isRunning":true,"totalUnclaimedYield":"4500.00","denominationAssetBalance":"5062.50","denominationAssetTreasuryAllowance":"8000.00","allowanceCoveredPercentage":"100.00","requiredAllowance":"5750.00","treasuryIsContract":false,"treasuryAddress":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","scheduleAddress":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6","scheduleAbsenceReason":null}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns treasury coverage for the selected token's yield schedule: unclaimed yield, denomination balance, and the treasury allowance the schedule needs. `scheduleAbsenceReason` tells you whether the token is still indexing or has no schedule. The read is indexed. Use this before you change the yield treasury allowance.","summary":"Read token yield coverage","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/stats/yield-distribution":{"get":{"tags":["Token statistics"],"operationId":"v1/token/statsYieldDistribution","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Indexed yield periods plus claimed and unclaimed totals. Use holder yield periods when you need one holder's claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsYieldDistributionOutput"},"examples":{"example-1":{"value":{"periods":[{"id":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6-12","timestamp":"2026-03-04T09:12:41.000Z","totalYield":"1250.00","claimed":"800.00","unclaimed":"450.00"}],"totalYield":"1250.00","totalClaimed":"800.00","totalUnclaimed":"450.00"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns indexed yield periods for the selected token plus claimed and unclaimed totals. Each period is one interval on the yield schedule. Use holder yield periods when you need one holder's claims. Repeat the same request to refresh the snapshot.","summary":"Read token yield distribution","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/documents/{documentId}/download-url":{"get":{"tags":["Token documents"],"operationId":"v1/token/documents/getDownloadUrl","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"documentId","in":"path","schema":{"type":"string","minLength":1,"description":"Identifier of the document to download.","examples":["7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41"]},"required":true}],"responses":{"200":{"description":"Short-lived download URL for one document the caller can access. The URL expires; request a new one instead of retrying an expired URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDocumentDownloadOutput"},"examples":{"example-1":{"value":{"downloadUrl":"https://files.example.com/documents/northwind-series-a-prospectus.pdf?expires=1741705028","fileName":"northwind-series-a-prospectus.pdf","mimeType":"application/pdf","expiresAt":"2026-03-11T16:17:08.000Z"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0319","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0320","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0323","DALP-0326","DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Document not found","data":{"id":"DALP-0323","why":"The document ID supplied does not match any non-deleted document record for this token. The document may have been deleted already or the ID may belong to a different token.","fix":"Verify the document ID against the token's active document list and resubmit with a valid ID.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0339","DALP-12307","DALP-9259"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a short-lived download URL for one document the caller can access. Identify the document by `documentId`. The URL expires; request a new one instead of retrying an expired URL. This read does not change the document itself.","summary":"Create a token-document download URL","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/transfer":{"post":{"tags":["Token transfers and supply"],"operationId":"v1/token/transfer","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token_2"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-0375","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080","DALP-0372","DALP-0447","DALP-12024","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-0717","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Moves tokens from the caller, or from named `from` addresses when `transferType` is transferFrom, to one or more recipients on the selected token in the active organization. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token. Transfers are rejected while the token is paused or a source has too little spendable balance.","summary":"Transfer tokens","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_5"},"recipients":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}]},"amounts":{"anyOf":[{"$ref":"#/components/schemas/AssetAmount"},{"type":"array","items":{"$ref":"#/components/schemas/AssetAmount"}}]},"from":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}]},{"type":"null"}],"description":"Address(es) to transfer from when using allowance-based transfers"},"transferType":{"anyOf":[{"type":"string","enum":["standard","transferFrom"]},{"type":"null"}]}},"required":["recipients","amounts"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/transfer/forced":{"post":{"tags":["Token transfers and supply"],"operationId":"v1/token/forcedTransfer","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token_2"},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438","DALP-9485"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0706","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Token not found","data":{"id":"DALP-0706","why":"The token is not present in the serving projection.","fix":"Confirm the token reference and wait for indexing if it was created recently.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9482"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080","DALP-0447","DALP-12023","DALP-12088","DALP-9526"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0115","DALP-0339","DALP-0717","DALP-12038","DALP-12307","DALP-12360","DALP-9267"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0448","DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"Transaction queue confirmation timed out","data":{"id":"DALP-0448","why":"The transaction queue did not observe the queued transaction confirmation before its timeout window expired.","fix":"Check the transaction status before retrying so you do not submit a duplicate operation.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Seizes tokens from named source addresses and sends them to the listed recipients on the selected token in the active organization. The caller must hold a role that can force transfers. The platform checks the indexed token first, then submits a live chain transaction. This route waits for settlement and returns the updated indexed token.","summary":"Force transfer tokens","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_5"},"recipients":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}]},"amounts":{"anyOf":[{"$ref":"#/components/schemas/AssetAmount"},{"type":"array","items":{"$ref":"#/components/schemas/AssetAmount"}}]},"from":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}]}},"required":["recipients","amounts","from"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/transaction/{transactionHash}":{"get":{"tags":["Transactions"],"operationId":"v1/transaction/read","parameters":[{"name":"transactionHash","in":"path","schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"required":true}],"responses":{"200":{"description":"Blockchain transaction named by hash on the selected chain. A stored receipt from a queue record the caller owns is returned first. Otherwise the node is queried. `receipt` is null while the transaction is still pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionReadOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8","from":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","receipt":{"status":"Success","revertReason":null,"revertReasonDecoded":null,"blockNumber":"21458901","blockHash":"0x7f8e9d0c1b2a39485766554433221100ffeeddccbbaa99887766554433221100","gasUsed":"86421","effectiveGasPrice":"20000000000","from":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","to":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0383","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Transaction {transactionHash} not found","data":{"id":"DALP-0383","why":"The platform could not locate a transaction with that id in the queue or ownership scope. Transactions belonging to another organization's wallets are reported the same way as genuinely missing ones to prevent enumeration.","fix":"Verify the transaction id is correct and belongs to your organization's wallets. If the transaction was recently created, retry after a short delay to allow processing.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0012","DALP-0083","DALP-0084","DALP-12104","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the transaction named by `transactionHash` on the selected chain. A stored receipt from a queue record the caller owns is returned first. Otherwise the node is queried. `receipt` is null while the transaction is still pending. Repeat the call after the transaction is mined to receive the receipt.","summary":"Read a blockchain transaction","x-dalp-auth":"api-key"}},"/api/v1/contacts":{"get":{"tags":["Contacts"],"operationId":"v1Contacts.list","parameters":[{"name":"limit","in":"query","schema":{"type":"integer"},"required":false},{"name":"offset","in":"query","schema":{"type":"integer"},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["createdAt","updatedAt","name","wallet"]},"required":false},{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"filters","in":"query","schema":{"type":"object","properties":{"search":{"type":"string","minLength":1,"maxLength":120,"description":"Match against contact name or wallet. Between 1 and 120 characters.","examples":["Northwind"]}},"additionalProperties":false},"required":false,"style":"deepObject","explode":true}],"responses":{"200":{"description":"One page of contacts that belong to the authenticated user, with the total match count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsListOutput"},"examples":{"example-1":{"value":{"items":[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z"}],"total":1,"limit":20,"offset":0}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one page of the contacts that belong to the authenticated user. `limit` defaults to 20, `offset` starts at 0, and `orderBy` falls back to `createdAt` descending. Filter with `filters.search` to match name or wallet.","summary":"List contacts","x-dalp-auth":"session-or-api-key"},"post":{"tags":["Contacts"],"operationId":"v1Contacts.upsert","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"One address book entry. `wallet` is an EVM address in EIP-55 checksummed form, and `createdAt` and `updatedAt` are RFC 3339 timestamps in UTC.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact_1"},"examples":{"example-1":{"value":{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Creates a contact when you omit `id`, and updates the one you name when you send an `id`. A wallet address may appear only once per user, so a wallet that another of your entries already holds returns 409. An `id` that does not resolve to one of your entries returns 404.","summary":"Create or update a contact","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"},"name":{"type":"string"},"wallet":{"$ref":"#/components/schemas/EvmAddress"}},"required":["name","wallet"],"additionalProperties":false,"description":"Contact to store. Omit `id` to create a contact, or send the UUID of one of your existing contacts to update it. `name` is trimmed and must hold between 1 and 120 characters after trimming. `wallet` is an EVM address and may appear on only one of your contacts.","examples":[{"name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Operations","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/contacts/{id}":{"get":{"tags":["Contacts"],"operationId":"v1Contacts.read","parameters":[{"name":"id","in":"path","schema":{"type":"string","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid","description":"Identifier of the contact, assigned by the platform as a UUID.","examples":["7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41"]},"required":true}],"responses":{"200":{"description":"One address book entry. `wallet` is an EVM address in EIP-55 checksummed form, and `createdAt` and `updatedAt` are RFC 3339 timestamps in UTC.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact_1"},"examples":{"example-1":{"value":{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the single contact named by the `id` path parameter, which is the UUID the platform assigned when it was stored. Entries are scoped to the authenticated user, so an identifier that belongs to another user returns 404 rather than 403.","summary":"Get a contact","x-dalp-auth":"session-or-api-key"},"delete":{"tags":["Contacts"],"operationId":"v1Contacts.delete","parameters":[{"name":"id","in":"path","schema":{"type":"string","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid","description":"Identifier of the contact, assigned by the platform as a UUID.","examples":["7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Confirmation that the named contact was removed from the authenticated user's address book.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsDeleteOutput"},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes a contact from the authenticated user's address book. Pass the UUID the platform assigned to the contact as the `id` path parameter. Deleting a contact that no longer exists, or one that belongs to another user, returns 404.","summary":"Delete a contact","x-dalp-auth":"session-or-api-key"}},"/api/v1/contacts/search":{"get":{"tags":["Contacts"],"operationId":"v1Contacts.search","parameters":[{"name":"query","in":"query","schema":{"type":"string"},"required":true},{"name":"limit","in":"query","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"A short list of contacts whose name or wallet matches the query, best-match first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsSearchOutput_1"},"examples":{"example-1":{"value":[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a short list of contacts whose name or wallet matches `query`. `limit` defaults to 10 and accepts at most 50. Use the list route when you need a full page.","summary":"Search contacts","x-dalp-auth":"session-or-api-key"}},"/api/v1/identity-recovery/preview/{userId}":{"get":{"tags":["Identity recovery"],"operationId":"v1IdentityRecovery.preview","parameters":[{"name":"userId","in":"path","schema":{"type":"string","minLength":1,"description":"Identifier of the user whose access is being recovered. The user must belong to the caller's active organization.","examples":["3f9c1b7e5a2d4068"]},"required":true},{"name":"wallet","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false}],"responses":{"200":{"description":"What a recovery would move for one user, and what stops it today. `lostWallet` is the checksummed address the platform treats as lost. Reading a preview changes nothing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoveryPreviewOutput"},"examples":{"example-1":{"value":{"user":{"id":"3f9c1b7e5a2d4068","email":"treasury@northwind.example","name":"Amara Okafor"},"lostWallet":"0x9A3f7c21B45e08D6cF1B2A4e5d7f8C0913a6B2d4","identity":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","status":"registered","isMarkedAsLost":false},"tokenBalances":[{"tokenAddress":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenName":"Euro Deposit","tokenSymbol":"EURD","balance":"1250.5","balanceExact":"1250500000000000000000","decimals":18}],"canRecover":true,"blockingReasons":[]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Reports what a recovery would move for one user, and changes nothing. Read it before starting a recovery to see whether one can run at all.\n\nThe response names the wallet the platform treats as lost, the deployed identity contract and its registration state, every positive token holding recovery would move, and the reasons that block recovery today. `canRecover` is true only when `blockingReasons` is empty.\n\nNeeds an identity-manager role in the caller's active organization.","summary":"Preview an identity recovery","x-dalp-auth":"session-or-api-key"}},"/api/v1/identity-recovery/execute":{"post":{"tags":["Identity recovery"],"operationId":"v1IdentityRecovery.execute","parameters":[{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Caller-chosen key that identifies this submission. Reuse the same value when you retry a submission that failed or timed out.","examples":["9f14c0a7-2b6e-4d83-9c51-7ae0d4f2b318"]},"required":false}],"responses":{"200":{"description":"Outcome of a recovery that finished inside the request's wait window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoveryExecuteOutput"},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Starts the recovery for one user. A recovery runs until it reaches a terminal phase, and the status operation reports how far it got.\n\nNeeds an identity-manager role in the caller's active organization. Every submission goes through verification of the caller's own wallet, so send `walletVerification` when that wallet is protected by a code.","summary":"Start an identity recovery","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"$ref":"#/components/schemas/UserId"},"wallet":{"$ref":"#/components/schemas/EvmAddress"},"walletVerification":{"$ref":"#/components/schemas/UserVerification_5"}},"required":["userId"],"additionalProperties":false,"description":"Which user to recover, and how to sign for it. Send `wallet` with a checksummed address the target user owns to name the lost wallet explicitly. Omit `wallet` to let the platform resolve the user's wallet for the requested chain.","examples":[{"userId":"3f9c1b7e5a2d4068","wallet":"0x9A3f7c21B45e08D6cF1B2A4e5d7f8C0913a6B2d4"}]}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/identity-recovery/status/{userId}":{"get":{"tags":["Identity recovery"],"operationId":"v1IdentityRecovery.status","parameters":[{"name":"userId","in":"path","schema":{"type":"string","minLength":1,"description":"Identifier of the user whose access is being recovered. The user must belong to the caller's active organization.","examples":["3f9c1b7e5a2d4068"]},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Accepted and ignored. Reading status submits nothing, so there is no submission to deduplicate."},"required":false}],"responses":{"200":{"description":"Live progress of one user's recovery. Every field degrades instead of failing, so a recovery that has published no progress yet still reads back. Poll until `phase` is `completed`, `completed-with-token-failures`, or `failed`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoveryStatusOutput"},"examples":{"example-1":{"value":{"phase":"recovering-tokens","tokensRecovered":2,"totalTokens":3,"error":null,"newWallet":"0x4D2c8B71Fa03E59d6c8a1b7e2f4d9c0356Ab8E17","newIdentity":"0x2f8b1c4D7e0a9536B8C2D1F4E7a0b3c65D9e8f21","tokenRecoveryFailures":[]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Reports live progress of a user's recovery: the phase it is on, and the number of token transfers finished out of the number planned.\n\nPoll until `phase` is `completed`, `completed-with-token-failures`, or `failed`.","summary":"Read identity recovery status","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/claim-topics":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemClaimTopics.topicList","parameters":[],"responses":{"200":{"description":"Claim topics the active system resolves, including ones it inherits from registries above it in its registry chain.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClaimTopicV1"},"description":"Claim topics the active system resolves, including ones it inherits from registries above it in its registry chain."},"examples":{"example-1":{"value":[{"id":"0x5F4e1b0E6A3c9D2f8B7a4c1e0D9F6a3b8c5E2D10307832383565","topicId":"10334","name":"collateral","signature":"(uint256 amount, uint256 expiryTimestamp)","registry":{"id":"0x5F4e1b0E6A3c9D2f8B7a4c1e0D9F6a3b8c5E2D10"},"isGlobal":false}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Return the claim topics the active system resolves, including ones it inherits from registries above it in its registry chain.","summary":"List claim topics","x-dalp-auth":"session-or-api-key"},"post":{"tags":["Identities and claims"],"operationId":"v1SystemClaimTopics.topicCreate","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The registered topic name and the hash of the transaction that stored it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimTopicCreateOutput"},"examples":{"example-1":{"value":{"txHash":"0x9f2c1b4a7e0d38c5f6a2b1908e4d7c3a5b6f8e2d1c0a9b8f7e6d5c4b3a291807","name":"collateral"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433","DALP-9510"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Add a name and claim-data type list to the topic scheme registry the active system owns. The caller needs the claim policy manager role. The platform rejects a name that registry already holds.","summary":"Register a claim topic","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimTopicCreateInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/claim-topics/{name}":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemClaimTopics.topicRead","parameters":[{"name":"name","in":"path","schema":{"type":"string","description":"Registered name of the claim topic. Matching is exact and case sensitive, so send the name in the same form the registry holds. Minimum length is 1 character.","minLength":1},"required":true}],"responses":{"200":{"description":"The named claim topic and the issuers trusted to attest it today. Use `trustedIssuers` to pick a signing issuer before you issue a claim. An empty list means no issuer can sign this topic.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimTopicV1Read"},"examples":{"example-1":{"value":{"id":"0x5F4e1b0E6A3c9D2f8B7a4c1e0D9F6a3b8c5E2D10307832383565","name":"collateral","signature":"(uint256 amount, uint256 expiryTimestamp)","topicId":"10334","trustedIssuers":[{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59","addedAt":"2026-03-14T09:21:00.000Z","revokedAt":"1970-01-01T00:00:00.000Z"}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0242","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Return one claim topic by name, together with the issuers currently trusted to attest it. Topics that are no longer enabled do not resolve.","summary":"Read a claim topic","x-dalp-auth":"session-or-api-key"},"put":{"tags":["Identities and claims"],"operationId":"v1SystemClaimTopics.topicUpdate","parameters":[{"name":"name","in":"path","schema":{"type":"string","description":"Registered name of the claim topic. Matching is exact and case sensitive, so send the name in the same form the registry holds. Minimum length is 1 character.","minLength":1},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The topic name, the new stored signature, and the hash of the transaction that wrote it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimTopicUpdateOutput"},"examples":{"example-1":{"value":{"txHash":"0x9f2c1b4a7e0d38c5f6a2b1908e4d7c3a5b6f8e2d1c0a9b8f7e6d5c4b3a291807","name":"collateral","newSignature":"(uint256 amount, uint256 expiryTimestamp, address attestor)"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0242","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Replace the Solidity type list stored for a claim topic in the topic scheme registry the active system owns. The topic keeps its name and its on-chain topic id.","summary":"Replace a claim topic signature","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimTopicUpdateBody"}}},"required":true},"x-dalp-auth":"session-or-api-key"},"delete":{"tags":["Identities and claims"],"operationId":"v1SystemClaimTopics.topicDelete","parameters":[{"name":"name","in":"path","schema":{"type":"string","description":"Registered name of the claim topic. Matching is exact and case sensitive, so send the name in the same form the registry holds. Minimum length is 1 character.","minLength":1},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The removed topic name and the hash of the transaction that removed it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimTopicDeleteOutput"},"examples":{"example-1":{"value":{"txHash":"0x9f2c1b4a7e0d38c5f6a2b1908e4d7c3a5b6f8e2d1c0a9b8f7e6d5c4b3a291807","name":"collateral"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0242","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Drop a name from the topic scheme registry the active system owns. Topics the system inherits from another registry stay in place.","summary":"Remove a claim topic","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimTopicDeleteBody"}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/compliance-modules":{"post":{"tags":["Compliance rules"],"operationId":"v1SystemCompliance.create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Organization system on one chain. Registry fields are `null` until bootstrap finishes. Use `status` to decide whether writes can proceed. `userPermissions` and `userIdentity` describe the current caller.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"canResume":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"chainId":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"null"}]},{"type":"null"}]},"deployedInTransaction":{"type":"string","description":"Transaction hash where system was deployed","examples":["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]},"tokenFactoryRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenFactories":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Factory display name.","examples":["Bond Factory"]},"typeId":{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal","dalp-asset"],"description":"Instrument type this factory deploys.","examples":["bond"]}},"required":["id","name","typeId"],"additionalProperties":false,"description":"Token factory registered on this system."}}},"required":["id","tokenFactories"],"additionalProperties":false,"description":"Registry of token factories on this system, including the factories already created."},{"type":"null"}]},"systemAddonRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"systemAddons":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Addon display name.","examples":["XvP Settlement"]},"typeId":{"type":"string","enum":["push-airdrop","vesting-airdrop","time-bound-airdrop","fixed-yield-schedule","xvp-settlement","trading-venue","token-sale","historical-balances-feature-factory","maturity-redemption-feature-factory","hold-feature-factory","transaction-fee-feature-factory","transaction-fee-accounting-feature-factory","voting-power-feature-factory","external-transaction-fee-feature-factory","fixed-treasury-yield-feature-factory","dividend-yield-feature-factory","interest-yield-feature-factory","aum-fee-feature-factory","conversion-feature-factory","conversion-minter-feature-factory","distribution-waterfall-feature-factory","permit-feature-factory","scalar-feed-aggregator-adapter-factory","issuer-signed-scalar-feed","paymaster-signer","token-governance","token-governance-timelock","document-anchor-registry","access-manager","price-resolver","unknown","vault"],"description":"Addon type, including vault addons."},"version":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","name","typeId"],"additionalProperties":false,"description":"System addon deployed beside the core registries."}}},"required":["id","systemAddons"],"additionalProperties":false,"description":"Registry of system addons, including the addons already created."},{"type":"null"}]},"compliance":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"module":{"$ref":"#/components/schemas/EvmAddress"},"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module type.","examples":["identity-verification"]},"name":{"type":"string","description":"Module display name.","examples":["Identity verification"]}},"required":["id","module","typeId","name"],"additionalProperties":false,"description":"Compliance module available on this system."}},"required":["id","complianceModule"],"additionalProperties":false,"description":"Global compliance module enabled for the system."}}},"required":["id","complianceModuleConfigs"],"additionalProperties":false,"description":"System compliance contract and the global module configurations attached to it."},{"type":"null"}]},"complianceModuleRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"complianceModules":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"module":{"$ref":"#/components/schemas/EvmAddress"},"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module type.","examples":["identity-verification"]},"name":{"type":"string","description":"Module display name.","examples":["Identity verification"]}},"required":["id","module","typeId","name"],"additionalProperties":false,"description":"Compliance module available on this system."}}},"required":["id","complianceModules"],"additionalProperties":false,"description":"Registry of compliance modules available to this system."},{"type":"null"}]},"systemAccessManager":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"accessControl":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"admin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"auditor":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimPolicyManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimIssuer":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"complianceManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"custodian":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"emergency":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"feedsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"fundsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"gasManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"governance":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"organisationIdentityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"saleAdmin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"supplyManagement":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"trustedIssuersMetaRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonManager":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"roleAdmins":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false}},"required":["id","accessControl"],"additionalProperties":false,"description":"On-chain access manager for this system, including the current role assignments."},{"type":"null"}]},"identityRegistryStorage":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"null"}]},"identityRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"registeredIdentities":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"country":{"anyOf":[{"type":"number"},{"type":"null"}]},"status":{"type":"string","enum":["PENDING","ACTIVE"],"description":"Indexed identity registration status"}},"required":["identity","country","status"],"additionalProperties":false,"description":"One identity registered in the system registry. `country` is the stored numeric ISO code, or `null` when unspecified."}}},"required":["id","registeredIdentities"],"additionalProperties":false,"description":"Identity registry contract and the identities currently registered in it."},{"type":"null"}]},"trustedIssuersRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"null"}]},"topicSchemeRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"null"}]},"externalTokenRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"null"}],"description":"Registry of external tokens tracked by this system. `null` before bootstrap completes."},"userPermissions":{"anyOf":[{"type":"object","properties":{"roles":{"type":"object","properties":{"addonManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"auditor":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"systemManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tokenManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"complianceManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimPolicyManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimIssuer":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"identityManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"feedsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"gasManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false},"holdsAssetGovernanceRole":{"type":"boolean"},"actions":{"type":"object","properties":{"accountNativeBalanceRead":{"type":"boolean"},"accountSearch":{"type":"boolean"},"addonCreate":{"type":"boolean"},"adminList":{"type":"boolean"},"claimCreate":{"type":"boolean"},"claimList":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"complianceModuleCreate":{"type":"boolean"},"complianceModuleRemove":{"type":"boolean"},"fixedYieldScheduleCreate":{"type":"boolean"},"tokenSaleCreate":{"type":"boolean"},"xvpCreate":{"type":"boolean"},"grantRole":{"type":"boolean"},"identityCreate":{"type":"boolean"},"identityRead":{"type":"boolean"},"identitySearch":{"type":"boolean"},"identityList":{"type":"boolean"},"entityList":{"type":"boolean"},"identityRegister":{"type":"boolean"},"identityUpdateCountry":{"type":"boolean"},"kycDelete":{"type":"boolean"},"kycList":{"type":"boolean"},"kycRead":{"type":"boolean"},"kycUpsert":{"type":"boolean"},"kycProfileRead":{"type":"boolean"},"kycVersionsList":{"type":"boolean"},"kycVersionCreate":{"type":"boolean"},"kycVersionRead":{"type":"boolean"},"kycVersionUpdate":{"type":"boolean"},"kycVersionSubmit":{"type":"boolean"},"kycVersionApprove":{"type":"boolean"},"kycVersionReject":{"type":"boolean"},"kycVersionRequestUpdate":{"type":"boolean"},"kycDocumentUpload":{"type":"boolean"},"kycDocumentList":{"type":"boolean"},"kycDocumentDelete":{"type":"boolean"},"kycDocumentRead":{"type":"boolean"},"kycActionRequestsList":{"type":"boolean"},"revokeRole":{"type":"boolean"},"tokenCreate":{"type":"boolean"},"tokenFactoryCreate":{"type":"boolean"},"topicCreate":{"type":"boolean"},"topicDelete":{"type":"boolean"},"topicUpdate":{"type":"boolean"},"trustedIssuerCreate":{"type":"boolean"},"trustedIssuerDelete":{"type":"boolean"},"trustedIssuerUpdate":{"type":"boolean"},"userCreate":{"type":"boolean"},"userList":{"type":"boolean"},"userRead":{"type":"boolean"},"userSearch":{"type":"boolean"},"userSecurityManage":{"type":"boolean"}},"required":["accountNativeBalanceRead","accountSearch","addonCreate","adminList","claimCreate","claimList","claimRevoke","complianceModuleCreate","complianceModuleRemove","fixedYieldScheduleCreate","tokenSaleCreate","xvpCreate","grantRole","identityCreate","identityRead","identitySearch","identityList","entityList","identityRegister","identityUpdateCountry","kycDelete","kycList","kycRead","kycUpsert","kycProfileRead","kycVersionsList","kycVersionCreate","kycVersionRead","kycVersionUpdate","kycVersionSubmit","kycVersionApprove","kycVersionReject","kycVersionRequestUpdate","kycDocumentUpload","kycDocumentList","kycDocumentDelete","kycDocumentRead","kycActionRequestsList","revokeRole","tokenCreate","tokenFactoryCreate","topicCreate","topicDelete","topicUpdate","trustedIssuerCreate","trustedIssuerDelete","trustedIssuerUpdate","userCreate","userList","userRead","userSearch","userSecurityManage"],"additionalProperties":false,"description":"Whether the current caller may perform each system action. `true` means the request would pass the corresponding permission check."}},"required":["roles","holdsAssetGovernanceRole","actions"],"additionalProperties":false,"description":"Caller permissions on this system. `roles` are on-chain access-control roles. `actions` are the derived Console and API capabilities. `holdsAssetGovernanceRole` is true when the caller can govern assets on this system."},{"type":"null"}],"description":"Caller permissions on this system. Omitted on unauthenticated reads."},"userIdentity":{"anyOf":[{"type":"object","properties":{"address":{"$ref":"#/components/schemas/EvmAddress"},"registered":{"anyOf":[{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["isRegistered","country"],"additionalProperties":false},{"type":"null"}]}},"required":["address"],"additionalProperties":false,"description":"Caller's identity on this system. `address` is the identity contract. `registered` is present only when the identity is ACTIVE in the registry, and includes the stored country."},{"type":"null"}],"description":"Caller's identity on this system. `address` means an identity contract exists. `registered` means the identity is ACTIVE in the registry."},"status":{"type":"string","enum":["not_created","bootstrapping","completed","unknown"],"description":"Current deployment status of the system","examples":["not_created","bootstrapping","completed","unknown"]},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Last update timestamp from deployment tracking"},"userIdentityRegistered":{"type":"boolean","description":"Whether the current user's identity is registered in the identity registry","examples":[true,false]},"isZeroGasNetwork":{"type":"boolean","description":"Whether the active chain charges no gas (zero base fee)","examples":[true,false]}},"required":["id","deployedInTransaction","tokenFactoryRegistry","systemAddonRegistry","compliance","complianceModuleRegistry","systemAccessManager","identityRegistryStorage","identityRegistry","trustedIssuersRegistry","topicSchemeRegistry","externalTokenRegistry","status","updatedAt","userIdentityRegistered","isZeroGasNetwork"],"additionalProperties":false,"description":"Organization system on one chain. Registry fields are `null` until bootstrap finishes. Use `status` to decide whether writes can proceed. `userPermissions` and `userIdentity` describe the current caller.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","canResume":false,"chainId":1,"deployedInTransaction":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef","tokenFactoryRegistry":null,"systemAddonRegistry":null,"compliance":null,"complianceModuleRegistry":null,"systemAccessManager":null,"identityRegistryStorage":null,"identityRegistry":null,"trustedIssuersRegistry":null,"topicSchemeRegistry":null,"externalTokenRegistry":null,"status":"bootstrapping","updatedAt":"2026-03-15T14:30:00.000Z","userIdentityRegistered":false,"isZeroGasNetwork":false}]},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","canResume":false,"chainId":1,"deployedInTransaction":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef","tokenFactoryRegistry":null,"systemAddonRegistry":null,"compliance":null,"complianceModuleRegistry":null,"systemAccessManager":null,"identityRegistryStorage":null,"identityRegistry":null,"trustedIssuersRegistry":null,"topicSchemeRegistry":null,"externalTokenRegistry":null,"status":"bootstrapping","updatedAt":"2026-03-15T14:30:00.000Z","userIdentityRegistered":false,"isZeroGasNetwork":false}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12136","DALP-12193","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0247","DALP-12283","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Module {registryAddress} is not registered in the compliance module registry","data":{"id":"DALP-0247","why":"The platform checked the compliance module registry for the given module address and found no matching entry. The module must be registered before it can be uninstalled.","fix":"Confirm the module address is correct and that it appears in the system's compliance module registry before calling this operation.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12285","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286","DALP-12287"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12108","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Registers module implementations on the active system's module registry, so that later requests can install and configure bindings for them. You need the system manager role.","summary":"Register compliance module implementations","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"anyOf":[{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"complianceModules":{"anyOf":[{"type":"string","enum":["all"],"description":"Register every module implementation the indexed module directory reports.","examples":["all"]},{"type":"object","properties":{"type":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"},"implementation":{"$ref":"#/components/schemas/EvmAddress"}},"required":["type"],"additionalProperties":false,"description":"One module type to register. Send only the type identifier to take the implementation the indexed module directory reports, or send an implementation contract address to register that implementation instead.","examples":[{"type":"country-block-list-v2"}]},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"},"implementation":{"$ref":"#/components/schemas/EvmAddress"}},"required":["type"],"additionalProperties":false,"description":"One module type to register. Send only the type identifier to take the implementation the indexed module directory reports, or send an implementation contract address to register that implementation instead.","examples":[{"type":"country-block-list-v2"}]}}],"description":"The module types to register: `all`, one module configuration, or an array of module configurations. The platform skips types the registry already holds.","examples":["all",{"type":"country-block-list-v2"},[{"type":"address-block-list-v2"}]]}},"required":["complianceModules"],"additionalProperties":false,"description":"Module implementations to register on the active system's module registry. Send `all` or a list of types.","examples":[{"complianceModules":"all"}]}}},"required":true},"x-dalp-auth":"session-or-api-key"},"delete":{"tags":["Compliance rules"],"operationId":"v1SystemCompliance.removeGlobal","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Organization system on one chain. Registry fields are `null` until bootstrap finishes. Use `status` to decide whether writes can proceed. `userPermissions` and `userIdentity` describe the current caller.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"canResume":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"chainId":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"null"}]},{"type":"null"}]},"deployedInTransaction":{"type":"string","description":"Transaction hash where system was deployed","examples":["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]},"tokenFactoryRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenFactories":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Factory display name.","examples":["Bond Factory"]},"typeId":{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal","dalp-asset"],"description":"Instrument type this factory deploys.","examples":["bond"]}},"required":["id","name","typeId"],"additionalProperties":false,"description":"Token factory registered on this system."}}},"required":["id","tokenFactories"],"additionalProperties":false,"description":"Registry of token factories on this system, including the factories already created."},{"type":"null"}]},"systemAddonRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"systemAddons":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Addon display name.","examples":["XvP Settlement"]},"typeId":{"type":"string","enum":["push-airdrop","vesting-airdrop","time-bound-airdrop","fixed-yield-schedule","xvp-settlement","trading-venue","token-sale","historical-balances-feature-factory","maturity-redemption-feature-factory","hold-feature-factory","transaction-fee-feature-factory","transaction-fee-accounting-feature-factory","voting-power-feature-factory","external-transaction-fee-feature-factory","fixed-treasury-yield-feature-factory","dividend-yield-feature-factory","interest-yield-feature-factory","aum-fee-feature-factory","conversion-feature-factory","conversion-minter-feature-factory","distribution-waterfall-feature-factory","permit-feature-factory","scalar-feed-aggregator-adapter-factory","issuer-signed-scalar-feed","paymaster-signer","token-governance","token-governance-timelock","document-anchor-registry","access-manager","price-resolver","unknown","vault"],"description":"Addon type, including vault addons."},"version":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","name","typeId"],"additionalProperties":false,"description":"System addon deployed beside the core registries."}}},"required":["id","systemAddons"],"additionalProperties":false,"description":"Registry of system addons, including the addons already created."},{"type":"null"}]},"compliance":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"module":{"$ref":"#/components/schemas/EvmAddress"},"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module type.","examples":["identity-verification"]},"name":{"type":"string","description":"Module display name.","examples":["Identity verification"]}},"required":["id","module","typeId","name"],"additionalProperties":false,"description":"Compliance module available on this system."}},"required":["id","complianceModule"],"additionalProperties":false,"description":"Global compliance module enabled for the system."}}},"required":["id","complianceModuleConfigs"],"additionalProperties":false,"description":"System compliance contract and the global module configurations attached to it."},{"type":"null"}]},"complianceModuleRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"complianceModules":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"module":{"$ref":"#/components/schemas/EvmAddress"},"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module type.","examples":["identity-verification"]},"name":{"type":"string","description":"Module display name.","examples":["Identity verification"]}},"required":["id","module","typeId","name"],"additionalProperties":false,"description":"Compliance module available on this system."}}},"required":["id","complianceModules"],"additionalProperties":false,"description":"Registry of compliance modules available to this system."},{"type":"null"}]},"systemAccessManager":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"accessControl":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"admin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"auditor":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimPolicyManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimIssuer":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"complianceManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"custodian":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"emergency":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"feedsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"fundsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"gasManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"governance":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"organisationIdentityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"saleAdmin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"supplyManagement":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"trustedIssuersMetaRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonManager":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"roleAdmins":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false}},"required":["id","accessControl"],"additionalProperties":false,"description":"On-chain access manager for this system, including the current role assignments."},{"type":"null"}]},"identityRegistryStorage":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"null"}]},"identityRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"registeredIdentities":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"country":{"anyOf":[{"type":"number"},{"type":"null"}]},"status":{"type":"string","enum":["PENDING","ACTIVE"],"description":"Indexed identity registration status"}},"required":["identity","country","status"],"additionalProperties":false,"description":"One identity registered in the system registry. `country` is the stored numeric ISO code, or `null` when unspecified."}}},"required":["id","registeredIdentities"],"additionalProperties":false,"description":"Identity registry contract and the identities currently registered in it."},{"type":"null"}]},"trustedIssuersRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"null"}]},"topicSchemeRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"null"}]},"externalTokenRegistry":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},{"type":"null"}],"description":"Registry of external tokens tracked by this system. `null` before bootstrap completes."},"userPermissions":{"anyOf":[{"type":"object","properties":{"roles":{"type":"object","properties":{"addonManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"auditor":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"systemManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tokenManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"complianceManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimPolicyManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimIssuer":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"identityManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"feedsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"gasManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false},"holdsAssetGovernanceRole":{"type":"boolean"},"actions":{"type":"object","properties":{"accountNativeBalanceRead":{"type":"boolean"},"accountSearch":{"type":"boolean"},"addonCreate":{"type":"boolean"},"adminList":{"type":"boolean"},"claimCreate":{"type":"boolean"},"claimList":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"complianceModuleCreate":{"type":"boolean"},"complianceModuleRemove":{"type":"boolean"},"fixedYieldScheduleCreate":{"type":"boolean"},"tokenSaleCreate":{"type":"boolean"},"xvpCreate":{"type":"boolean"},"grantRole":{"type":"boolean"},"identityCreate":{"type":"boolean"},"identityRead":{"type":"boolean"},"identitySearch":{"type":"boolean"},"identityList":{"type":"boolean"},"entityList":{"type":"boolean"},"identityRegister":{"type":"boolean"},"identityUpdateCountry":{"type":"boolean"},"kycDelete":{"type":"boolean"},"kycList":{"type":"boolean"},"kycRead":{"type":"boolean"},"kycUpsert":{"type":"boolean"},"kycProfileRead":{"type":"boolean"},"kycVersionsList":{"type":"boolean"},"kycVersionCreate":{"type":"boolean"},"kycVersionRead":{"type":"boolean"},"kycVersionUpdate":{"type":"boolean"},"kycVersionSubmit":{"type":"boolean"},"kycVersionApprove":{"type":"boolean"},"kycVersionReject":{"type":"boolean"},"kycVersionRequestUpdate":{"type":"boolean"},"kycDocumentUpload":{"type":"boolean"},"kycDocumentList":{"type":"boolean"},"kycDocumentDelete":{"type":"boolean"},"kycDocumentRead":{"type":"boolean"},"kycActionRequestsList":{"type":"boolean"},"revokeRole":{"type":"boolean"},"tokenCreate":{"type":"boolean"},"tokenFactoryCreate":{"type":"boolean"},"topicCreate":{"type":"boolean"},"topicDelete":{"type":"boolean"},"topicUpdate":{"type":"boolean"},"trustedIssuerCreate":{"type":"boolean"},"trustedIssuerDelete":{"type":"boolean"},"trustedIssuerUpdate":{"type":"boolean"},"userCreate":{"type":"boolean"},"userList":{"type":"boolean"},"userRead":{"type":"boolean"},"userSearch":{"type":"boolean"},"userSecurityManage":{"type":"boolean"}},"required":["accountNativeBalanceRead","accountSearch","addonCreate","adminList","claimCreate","claimList","claimRevoke","complianceModuleCreate","complianceModuleRemove","fixedYieldScheduleCreate","tokenSaleCreate","xvpCreate","grantRole","identityCreate","identityRead","identitySearch","identityList","entityList","identityRegister","identityUpdateCountry","kycDelete","kycList","kycRead","kycUpsert","kycProfileRead","kycVersionsList","kycVersionCreate","kycVersionRead","kycVersionUpdate","kycVersionSubmit","kycVersionApprove","kycVersionReject","kycVersionRequestUpdate","kycDocumentUpload","kycDocumentList","kycDocumentDelete","kycDocumentRead","kycActionRequestsList","revokeRole","tokenCreate","tokenFactoryCreate","topicCreate","topicDelete","topicUpdate","trustedIssuerCreate","trustedIssuerDelete","trustedIssuerUpdate","userCreate","userList","userRead","userSearch","userSecurityManage"],"additionalProperties":false,"description":"Whether the current caller may perform each system action. `true` means the request would pass the corresponding permission check."}},"required":["roles","holdsAssetGovernanceRole","actions"],"additionalProperties":false,"description":"Caller permissions on this system. `roles` are on-chain access-control roles. `actions` are the derived Console and API capabilities. `holdsAssetGovernanceRole` is true when the caller can govern assets on this system."},{"type":"null"}],"description":"Caller permissions on this system. Omitted on unauthenticated reads."},"userIdentity":{"anyOf":[{"type":"object","properties":{"address":{"$ref":"#/components/schemas/EvmAddress"},"registered":{"anyOf":[{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["isRegistered","country"],"additionalProperties":false},{"type":"null"}]}},"required":["address"],"additionalProperties":false,"description":"Caller's identity on this system. `address` is the identity contract. `registered` is present only when the identity is ACTIVE in the registry, and includes the stored country."},{"type":"null"}],"description":"Caller's identity on this system. `address` means an identity contract exists. `registered` means the identity is ACTIVE in the registry."},"status":{"type":"string","enum":["not_created","bootstrapping","completed","unknown"],"description":"Current deployment status of the system","examples":["not_created","bootstrapping","completed","unknown"]},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Last update timestamp from deployment tracking"},"userIdentityRegistered":{"type":"boolean","description":"Whether the current user's identity is registered in the identity registry","examples":[true,false]},"isZeroGasNetwork":{"type":"boolean","description":"Whether the active chain charges no gas (zero base fee)","examples":[true,false]}},"required":["id","deployedInTransaction","tokenFactoryRegistry","systemAddonRegistry","compliance","complianceModuleRegistry","systemAccessManager","identityRegistryStorage","identityRegistry","trustedIssuersRegistry","topicSchemeRegistry","externalTokenRegistry","status","updatedAt","userIdentityRegistered","isZeroGasNetwork"],"additionalProperties":false,"description":"Organization system on one chain. Registry fields are `null` until bootstrap finishes. Use `status` to decide whether writes can proceed. `userPermissions` and `userIdentity` describe the current caller.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","canResume":false,"chainId":1,"deployedInTransaction":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef","tokenFactoryRegistry":null,"systemAddonRegistry":null,"compliance":null,"complianceModuleRegistry":null,"systemAccessManager":null,"identityRegistryStorage":null,"identityRegistry":null,"trustedIssuersRegistry":null,"topicSchemeRegistry":null,"externalTokenRegistry":null,"status":"bootstrapping","updatedAt":"2026-03-15T14:30:00.000Z","userIdentityRegistered":false,"isZeroGasNetwork":false}]},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","canResume":false,"chainId":1,"deployedInTransaction":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef","tokenFactoryRegistry":null,"systemAddonRegistry":null,"compliance":null,"complianceModuleRegistry":null,"systemAccessManager":null,"identityRegistryStorage":null,"identityRegistry":null,"trustedIssuersRegistry":null,"topicSchemeRegistry":null,"externalTokenRegistry":null,"status":"bootstrapping","updatedAt":"2026-03-15T14:30:00.000Z","userIdentityRegistered":false,"isZeroGasNetwork":false}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12136","DALP-12193","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0247","DALP-12283","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Module {registryAddress} is not registered in the compliance module registry","data":{"id":"DALP-0247","why":"The platform checked the compliance module registry for the given module address and found no matching entry. The module must be registered before it can be uninstalled.","fix":"Confirm the module address is correct and that it appears in the system's compliance module registry before calling this operation.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12285","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286","DALP-12287"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12108","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes a global binding from the active system, so the compliance engine stops evaluating that module for the tokens bound to the system. You need the compliance manager role.","summary":"Uninstall a global compliance module binding","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"anyOf":[{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"module":{"$ref":"#/components/schemas/EvmAddress"},"instanceAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["module"],"additionalProperties":false,"description":"Global binding to uninstall from the active system.","examples":[{"module":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/compliance-module":{"get":{"tags":["Compliance rules"],"operationId":"v1SystemCompliance.list","parameters":[],"responses":{"200":{"description":"Compliance modules the active system's module registry holds, with the global bindings installed for each one.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"module":{"$ref":"#/components/schemas/EvmAddress"},"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"},"name":{"type":"string"},"globalConfigs":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"parameters":{"type":"object","properties":{"addresses":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}},{"type":"null"}]},"countries":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}]},"capped":{"type":"object","properties":{"maxSupply":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["maxSupply"],"additionalProperties":false},"collateral":{"type":"object","properties":{"proofTopic":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"ratioBps":{"type":"integer"},"trustedIssuers":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}},"required":["proofTopic","ratioBps","trustedIssuers"],"additionalProperties":false},"tokenSupplyLimit":{"type":"object","properties":{"maxSupply":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"periodLength":{"type":"integer"},"rolling":{"type":"boolean"},"useBasePrice":{"type":"boolean"},"global":{"type":"boolean"}},"required":["maxSupply","periodLength","rolling","useBasePrice","global"],"additionalProperties":false},"capitalRaiseLimit":{"type":"object","properties":{"maxSupply":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"periodLength":{"type":"integer"},"rolling":{"type":"boolean"},"priceResolver":{"$ref":"#/components/schemas/EvmAddress"},"priceTopicId":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["maxSupply","periodLength","rolling","priceResolver","priceTopicId"],"additionalProperties":false},"issuanceVolumeLimit":{"type":"object","properties":{"maxSupply":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"periodLength":{"type":"integer","minimum":1,"maximum":36500},"rolling":{"type":"boolean"}},"required":["maxSupply","periodLength","rolling"],"additionalProperties":false},"minimumHolding":{"type":"object","properties":{"minimumHolding":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"exemptWallets":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}},"required":["minimumHolding","exemptWallets"],"additionalProperties":false},"claimExpiry":{"type":"object","properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"gracePeriod":{"type":"integer"},"requireExpiry":{"type":"boolean"}},"required":["topics","gracePeriod","requireExpiry"],"additionalProperties":false},"investorCount":{"type":"object","properties":{"maxInvestors":{"type":"integer"},"global":{"type":"boolean"},"countryCodes":{"type":"array","items":{"type":"integer"}},"countryLimits":{"type":"array","items":{"type":"integer"}},"topicFilter":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"nodeType":{"type":"number","enum":[0,1,2,3],"description":"Expression type identifier"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false},{"type":"string","enum":["("]},{"type":"string","enum":[")"]}]}}},"required":["maxInvestors","global","countryCodes","countryLimits","topicFilter"],"additionalProperties":false},"investorCountV2":{"type":"object","properties":{"maxInvestors":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"countingPolicy":{"type":"string","enum":["lifetime","current-holders"]},"countryCodes":{"type":"array","items":{"type":"integer"}},"countryLimits":{"type":"array","items":{"type":"integer"}}},"required":["maxInvestors"],"additionalProperties":false},"identityCount":{"type":"object","properties":{"maxInvestors":{"type":"integer"},"countingPolicy":{"type":"string","enum":["lifetime","current-holders"]},"countryCodes":{"type":"array","items":{"type":"integer"}},"countryLimits":{"type":"array","items":{"type":"integer"}}},"required":["maxInvestors","countingPolicy","countryCodes","countryLimits"],"additionalProperties":false},"timeLock":{"type":"object","properties":{"holdPeriod":{"type":"integer"},"allowExemptions":{"type":"boolean"},"exemptionExpression":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"nodeType":{"type":"number","enum":[0,1,2,3],"description":"Expression type identifier"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false},{"type":"string","enum":["("]},{"type":"string","enum":[")"]}]}}},"required":["holdPeriod","allowExemptions","exemptionExpression"],"additionalProperties":false},"transferApproval":{"type":"object","properties":{"approvalAuthorities":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}},"allowExemptions":{"type":"boolean"},"oneTimeUse":{"type":"boolean"},"approvalMode":{"type":"integer","minimum":0,"maximum":2},"exemptionExpression":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"nodeType":{"type":"number","enum":[0,1,2,3],"description":"Expression type identifier"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false},{"type":"string","enum":["("]},{"type":"string","enum":[")"]}]}},"approvalExpiry":{"type":"integer"}},"required":["approvalAuthorities"],"additionalProperties":false},"identityVerification":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"nodeType":{"type":"number","enum":[0,1,2,3],"description":"Expression type identifier"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false},{"type":"string","enum":["("]},{"type":"string","enum":[")"]}]}}},"additionalProperties":false},"instanceAddress":{"$ref":"#/components/schemas/EvmAddress"},"isActive":{"type":"boolean"},"scope":{"type":"object","properties":{"senderInclusion":{"type":"array","items":{"type":"object","properties":{"nodeType":{"type":"number"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false}},"senderExemption":{"type":"array","items":{"type":"object","properties":{"nodeType":{"type":"number"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false}},"receiverInclusion":{"type":"array","items":{"type":"object","properties":{"nodeType":{"type":"number"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false}},"receiverExemption":{"type":"array","items":{"type":"object","properties":{"nodeType":{"type":"number"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false}},"tokenInclusion":{"type":"array","items":{"type":"object","properties":{"nodeType":{"type":"number"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false}},"tokenExemption":{"type":"array","items":{"type":"object","properties":{"nodeType":{"type":"number"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false}},"senderCountryInclusion":{"type":"array","items":{"type":"number"}},"senderCountryExclusion":{"type":"array","items":{"type":"number"}},"receiverCountryInclusion":{"type":"array","items":{"type":"number"}},"receiverCountryExclusion":{"type":"array","items":{"type":"number"}},"executionMode":{"type":"number"}},"required":["senderInclusion","senderExemption","receiverInclusion","receiverExemption","tokenInclusion","tokenExemption","senderCountryInclusion","senderCountryExclusion","receiverCountryInclusion","receiverCountryExclusion","executionMode"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","module","typeId","name"],"additionalProperties":false},"description":"Compliance modules the active system's module registry holds, with the global bindings installed for each one.","examples":[[{"id":"0x71c7656ec7ab88b098defb751b7401b5f6d8976f2546bcd3c84621e976d8185a91a922ae77ecec30","module":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","typeId":"country-block-list-v2","name":"country-block-list-v2","globalConfigs":[]}]]},"examples":{"example-1":{"value":[{"id":"0x71c7656ec7ab88b098defb751b7401b5f6d8976f2546bcd3c84621e976d8185a91a922ae77ecec30","module":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","typeId":"country-block-list-v2","name":"country-block-list-v2","globalConfigs":[]}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the compliance modules that the active system's module registry holds, with the global bindings installed for each one.","summary":"List registered compliance modules","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/claim/history":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemIdentityClaim.history","parameters":[{"name":"identityAddress","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"filters","in":"query","schema":{"type":"object","properties":{"claimTopic":{"type":"string","minLength":1,"maxLength":256,"description":"Optional claim topic filter (name, decimal topic ID, or hex hash)"},"claimSignature":{"type":"string","minLength":2,"description":"A valid Ethereum hex string starting with 0x","examples":["0x5208"]}},"additionalProperties":false,"description":"Optional filters for narrowing the event results"},"required":false,"style":"deepObject","explode":true}],"responses":{"200":{"description":"Recorded claim lifecycle events for the requested identity: `ClaimAdded`, `ClaimChanged`, `ClaimRemoved`, and `ClaimRevoked`.","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the event"},"eventName":{"type":"string","enum":["Approved","ClaimAdded","ClaimChanged","ClaimRemoved","ClaimRevoked","Executed","ExecutionFailed","ExecutionRequested"],"description":"Event name emitted by the identity contract"},"txIndex":{"type":"string","description":"Transaction index within the block"},"blockNumber":{"type":"string","description":"Block number for the event"},"blockTimestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"},"emitter":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Emitter contract metadata"},"sender":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Transaction sender"},"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the event value"},"name":{"type":"string","description":"Parameter name from the event"},"value":{"type":"string","description":"String representation of the parameter value"}},"required":["id","name","value"],"additionalProperties":false},"description":"Raw event arguments captured as name/value pairs"}},"required":["id","eventName","txIndex","blockNumber","blockTimestamp","transactionHash","emitter","sender"],"additionalProperties":false},"description":"Chronological list of claim events"}},"required":["events"],"additionalProperties":false,"description":"Recorded claim lifecycle events for the requested identity: `ClaimAdded`, `ClaimChanged`, `ClaimRemoved`, and `ClaimRevoked`."},"examples":{"example-1":{"value":{"events":[{"id":"0x71c7656ec7ab88b098defb751b7401b5f6d8976f-0-ClaimAdded","eventName":"ClaimAdded","txIndex":"0","blockNumber":"21450832","blockTimestamp":"2026-03-14T09:21:00.000Z","transactionHash":"0x3f1a9c74b2e05d8613a7c94f2b6d0e58ac71f39b4d2e6081c5a93f7b0d248e6c","emitter":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"sender":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59"},"values":[{"id":"topic","name":"topic","value":"knowYourCustomer"}]}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Return the recorded claim lifecycle events for one identity: `ClaimAdded`, `ClaimChanged`, `ClaimRemoved`, and `ClaimRevoked`. This operation reads from the Ledger Index and submits no transaction.","summary":"List claim events for an identity","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/claim/issue":{"post":{"tags":["Identities and claims"],"operationId":"v1SystemIdentityClaim.issue","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The issued claim: `claimTopic`, the identity that received it in `targetWallet`, `txHash` of the add transaction, and `success` true. List claim events for that identity until `ClaimAdded` is indexed, or open `txHash` on a block explorer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimsIssueOutput"},"examples":{"example-1":{"value":{"txHash":"0x3f1a9c74b2e05d8613a7c94f2b6d0e58ac71f39b4d2e6081c5a93f7b0d248e6c","success":true,"claimTopic":"knowYourCustomer","targetWallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0272","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Sign a claim with the issuer wallet of the calling participant and add it to the target identity contract. The topic must be registered, and the effective wallet must be a trusted issuer for that topic. The request requires the `claimIssuer` role.","summary":"Issue a claim to an identity","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimsIssueInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/claim/revoke":{"post":{"tags":["Identities and claims"],"operationId":"v1SystemIdentityClaim.revoke","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The revoked claim: `claimId` of the removed attestation, `txHash` of the remove transaction, and `success` true. List claim events for that identity until `ClaimRevoked` is indexed, or open `txHash` on a block explorer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimRevokeOutput"},"examples":{"example-1":{"value":{"txHash":"0x3f1a9c74b2e05d8613a7c94f2b6d0e58ac71f39b4d2e6081c5a93f7b0d248e6c","success":true,"claimId":"0x8c4d21f6a9b3e07d5148c2fb96e3047a1d5b8e2c60f47931ab5c8d20e6f13a94"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0272","DALP-0471","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-0262","DALP-12038","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Remove the active claim for one topic from the target identity contract. The signing wallet must hold a management key on that identity, and exactly one such claim must exist for the topic.","summary":"Revoke a claim from an identity","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimRevokeInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/by-wallet/{wallet}":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.readByWallet","parameters":[{"name":"wallet","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"tokenAddress","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false}],"responses":{"200":{"description":"The indexed identity linked to the wallet: contract address in `id`, owning account, registration country in `registered` when the registry entry is active, and non-revoked claims. Use `id` as the identity address on claim, key, and registration routes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityReadOutput"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"isContract":false,"hasIdentity":true,"registered":{"isRegistered":true,"country":"BE"},"claims":[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72-0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d61","name":"knowYourCustomer","signature":"0x3f81c4a9b27e0d6538f1a94c72b0e85d1c6a30f97b425e8d0139c6ba74e2f85d0b47a91e3c6d825f0a94b17c63e0d5289f4a1b76c30e9d5482b71fa0c96d3e841b","revoked":false,"issuer":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59","account":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59"}},"values":[],"isTrusted":true}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the indexed identity contract linked to a wallet address, with its owning account, its registration state, and its non-revoked claims.","summary":"Read the identity of a wallet","x-dalp-auth":"session-or-api-key"},"delete":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.delete","parameters":[{"name":"wallet","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The wallet whose registry entry was removed, and the transaction that removed it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityDeleteOutput"},"examples":{"example-1":{"value":{"txHash":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes the registry entry for a wallet. The identity contract remains deployed. The caller needs the identity-manager role.","summary":"Remove an identity registry entry","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"}},"additionalProperties":false}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/by-address/{identityAddress}":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.readById","parameters":[{"name":"identityAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"name":"tokenAddress","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false}],"responses":{"200":{"description":"The indexed identity at this contract address: owning account, `hasIdentity`, the active country in `registered` when that record is live, and non-revoked claims. Use `registered` and `hasIdentity` to decide whether to register the identity or issue a claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityReadOutput_1"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"isContract":false,"hasIdentity":true,"registered":{"isRegistered":true,"country":"BE"},"claims":[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72-0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d61","name":"knowYourCustomer","signature":"0x3f81c4a9b27e0d6538f1a94c72b0e85d1c6a30f97b425e8d0139c6ba74e2f85d0b47a91e3c6d825f0a94b17c63e0d5289f4a1b76c30e9d5482b71fa0c96d3e841b","revoked":false,"issuer":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59","account":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59"}},"values":[],"isTrusted":true}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the same identity projection as the wallet lookup, addressed by the identity contract address rather than by the wallet.","summary":"Read an identity by contract address","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/search":{"post":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.search","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The matching identity without its claims, or null when no indexed identity matches the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentitySearchOutput"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"isContract":false,"hasIdentity":true,"registered":{"isRegistered":true,"country":"BE"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Looks up one identity by wallet address or by identity contract address and returns a reduced projection that omits claims. A query that matches nothing succeeds and returns no identity rather than failing.","summary":"Search for a single identity","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"wallet":{"$ref":"#/components/schemas/EvmAddress"},"address":{"$ref":"#/components/schemas/EvmAddress"}},"additionalProperties":false}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/me":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.me","parameters":[],"responses":{"200":{"description":"The indexed identity of the authenticated session wallet: contract address in `id`, owning account, registration state, and non-revoked claims. Use this when the caller acts on its own identity and does not already know the wallet address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityReadOutput_2"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"isContract":false,"hasIdentity":true,"registered":{"isRegistered":true,"country":"BE"},"claims":[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72-0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d61","name":"knowYourCustomer","signature":"0x3f81c4a9b27e0d6538f1a94c72b0e85d1c6a30f97b425e8d0139c6ba74e2f85d0b47a91e3c6d825f0a94b17c63e0d5289f4a1b76c30e9d5482b71fa0c96d3e841b","revoked":false,"issuer":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59","account":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59"}},"values":[],"isTrusted":true}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the identity projection for the wallet of the authenticated session in the same shape as the wallet lookup.","summary":"Read the identity of the caller","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/list":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string"},"required":false},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":200},"required":false},{"name":"filters","in":"query","schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"isContract":{"type":"boolean"}},"additionalProperties":false},"required":false,"style":"deepObject","explode":true}],"responses":{"200":{"description":"Identities indexed for the organization system, each with its wallet, country, claim counts, and the KYC status derived from its registration record.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"status":{"$ref":"#/components/schemas/IdentityStatus_2"},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode_4"},{"type":"null"}]},"isContract":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimsCount":{"type":"integer","minimum":0},"activeClaimsCount":{"type":"integer","minimum":0},"revokedClaimsCount":{"type":"integer","minimum":0},"untrustedClaimsCount":{"type":"integer","minimum":0},"deployedInTransaction":{"type":"string"}},"required":["id","account","status","country","isContract","claimsCount","activeClaimsCount","revokedClaimsCount","untrustedClaimsCount","deployedInTransaction"],"additionalProperties":false}},"total":{"type":"integer","minimum":0},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":200},"offset":{"type":"integer","minimum":0}},"required":["items","total","offset"],"additionalProperties":false,"description":"Identities indexed for the organization system, each with its wallet, country, claim counts, and the KYC status derived from its registration record."},"examples":{"example-1":{"value":{"items":[{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"status":"registered","country":"BE","isContract":false,"claimsCount":4,"activeClaimsCount":3,"revokedClaimsCount":1,"untrustedClaimsCount":0,"deployedInTransaction":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4"}],"total":1,"limit":25,"offset":0}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the identities indexed for the organization system, each with its wallet, country, claim counts, and the KYC status derived from its registration record.","summary":"List identities","x-dalp-auth":"session-or-api-key"}},"/api/v1/identity":{"post":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The indexed identity: contract address in `id`, owning account, whether a registry record exists (`hasIdentity`), the active country in `registered` when that record is live, and the non-revoked claims. Use `id` on claim, key, and registration routes. Use `registered` and `hasIdentity` to decide whether to register the identity or issue a claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityMutationOutput"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"isContract":false,"hasIdentity":true,"registered":{"isRegistered":true,"country":"BE"},"claims":[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72-0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d61","name":"knowYourCustomer","signature":"0x3f81c4a9b27e0d6538f1a94c72b0e85d1c6a30f97b425e8d0139c6ba74e2f85d0b47a91e3c6d825f0a94b17c63e0d5289f4a1b76c30e9d5482b71fa0c96d3e841b","revoked":false,"issuer":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59","account":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59"}},"values":[],"isTrusted":true}]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-12390","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12389","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Deploys an identity contract for a wallet in the organization system. The caller needs the identity-manager role unless they create their own identity.","summary":"Create an identity","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"wallet":{"$ref":"#/components/schemas/EvmAddress"}},"additionalProperties":false,"description":"Wallet to deploy an identity contract for. Omit `wallet` to use the caller's effective wallet."}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/register-pending":{"post":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.registerPending","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The indexed identity after the pending registration is recorded: contract address, owning account, registry flags, and non-revoked claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityRegisterPendingOutput"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"isContract":false,"hasIdentity":true,"registered":{"isRegistered":true,"country":"BE"},"claims":[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72-0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d61","name":"knowYourCustomer","signature":"0x3f81c4a9b27e0d6538f1a94c72b0e85d1c6a30f97b425e8d0139c6ba74e2f85d0b47a91e3c6d825f0a94b17c63e0d5289f4a1b76c30e9d5482b71fa0c96d3e841b","revoked":false,"issuer":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59","account":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59"}},"values":[],"isTrusted":true}]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Registers an identity contract that is already deployed for a wallet but does not yet hold a registry entry. The wallet owner may run this for their own wallet.","summary":"Register a deployed identity that has no registry entry yet","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"organizationId":{"allOf":[{"$ref":"#/components/schemas/OrganizationId"},{"description":"The organization ID to register the identity for (defaults to the active organization of the authenticated user)"}]},"wallet":{"$ref":"#/components/schemas/EvmAddress"}},"additionalProperties":false}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity":{"put":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.register","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The indexed identity: contract address in `id`, owning account, whether a registry record exists (`hasIdentity`), the active country in `registered` when that record is live, and the non-revoked claims. Use `id` on claim, key, and registration routes. Use `registered` and `hasIdentity` to decide whether to register the identity or issue a claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityMutationOutput"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"isContract":false,"hasIdentity":true,"registered":{"isRegistered":true,"country":"BE"},"claims":[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72-0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d61","name":"knowYourCustomer","signature":"0x3f81c4a9b27e0d6538f1a94c72b0e85d1c6a30f97b425e8d0139c6ba74e2f85d0b47a91e3c6d825f0a94b17c63e0d5289f4a1b76c30e9d5482b71fa0c96d3e841b","revoked":false,"issuer":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59","account":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59"}},"values":[],"isTrusted":true}]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Writes a registry entry for a deployed identity. The caller needs the identity-manager role.","summary":"Register an identity in the identity registry","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"wallet":{"$ref":"#/components/schemas/EvmAddress"},"country":{"$ref":"#/components/schemas/ISOCountryCodeNormalizedEncoded"}},"required":["country"],"additionalProperties":false,"description":"Wallet and country to write into the identity registry of the active system."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/country":{"put":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.updateCountry","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The indexed identity: contract address in `id`, owning account, whether a registry record exists (`hasIdentity`), the active country in `registered` when that record is live, and the non-revoked claims. Use `id` on claim, key, and registration routes. Use `registered` and `hasIdentity` to decide whether to register the identity or issue a claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityMutationOutput"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","contractName":null},"isContract":false,"hasIdentity":true,"registered":{"isRegistered":true,"country":"BE"},"claims":[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72-0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d61","name":"knowYourCustomer","signature":"0x3f81c4a9b27e0d6538f1a94c72b0e85d1c6a30f97b425e8d0139c6ba74e2f85d0b47a91e3c6d825f0a94b17c63e0d5289f4a1b76c30e9d5482b71fa0c96d3e841b","revoked":false,"issuer":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59","account":{"id":"0x2F9c4Df9a0b6C1e8B3A7d5f2C04E6a1b8D3c7e59"}},"values":[],"isTrusted":true}]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Changes the country the identity registry records for a wallet. The caller needs the identity-manager role.","summary":"Update the country of a registered wallet","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"wallet":{"$ref":"#/components/schemas/EvmAddress"},"countryCode":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"}},"required":["wallet","countryCode"],"additionalProperties":false,"description":"Wallet whose recorded country should change, and the replacement numeric country code."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/identity/registration-status":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemIdentity.registrationStatus","parameters":[{"name":"organizationId","in":"query","schema":{"type":"string","minLength":1,"description":"Tenant organization identifier"},"required":false},{"name":"wallet","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false}],"responses":{"200":{"description":"How far the wallet has progressed through identity registration, plus the identity and system addresses once they are known.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityRegistrationStatusOutput"},"examples":{"example-1":{"value":{"status":"NO_SYSTEM","identityAddress":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","systemAddress":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns whether a wallet or identity is registered in the identity registry of the active system.","summary":"Read identity registration status","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/trusted-issuers":{"post":{"tags":["Identities and claims"],"operationId":"v1SystemTrustedIssuers.create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The issuer address and the hash of the registry transaction that carried the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustedIssuerMutationOutput"},"examples":{"example-1":{"value":{"txHash":"0x4f3d1a8c0b6e29d5741ac0f8b2e7d6390c5148aa9be3f207d4c8615ae0937b2c","issuerAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0294","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Adds an issuer identity to the trusted issuers registry of the active system together with the claim topics it may attest to. The platform returns a conflict when the issuer is already registered.","summary":"Register a trusted issuer","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"issuerAddress":{"$ref":"#/components/schemas/EvmAddress"},"claimTopicIds":{"$ref":"#/components/schemas/TrustedIssuerClaimTopicIds"}},"required":["issuerAddress","claimTopicIds"],"additionalProperties":false,"description":"Issuer identity to register in the trusted issuers registry of the active system, with the claim topics it may attest to."}}},"required":true},"x-dalp-auth":"session-or-api-key"},"put":{"tags":["Identities and claims"],"operationId":"v1SystemTrustedIssuers.upsert","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The issuer address and the hash of the registry transaction that carried the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustedIssuerMutationOutput"},"examples":{"example-1":{"value":{"txHash":"0x4f3d1a8c0b6e29d5741ac0f8b2e7d6390c5148aa9be3f207d4c8615ae0937b2c","issuerAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0294","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Registers the issuer when the trusted issuers registry of the active system does not hold it, and replaces its claim topics when it does.","summary":"Register a trusted issuer or replace its claim topics","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"issuerAddress":{"$ref":"#/components/schemas/EvmAddress"},"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"claimTopicIds":{"$ref":"#/components/schemas/TrustedIssuerClaimTopicIds"}},"required":["issuerAddress","claimTopicIds"],"additionalProperties":false}}},"required":true},"x-dalp-auth":"session-or-api-key"},"get":{"tags":["Identities and claims"],"operationId":"v1SystemTrustedIssuers.list","parameters":[],"responses":{"200":{"description":"Trusted issuers the active system accepts claims from, including entries inherited through the registry chain.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TrustedIssuer"},"description":"Trusted issuers the active system accepts claims from, including entries inherited through the registry chain."},"examples":{"example-1":{"value":[{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"},"claimTopics":[{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3307833626138646165623761616364336330646439333431373536383836653463373734636639663136353463656564363336383834336531323431383565663932","topicId":"26984799302505749158794800959285050858086405868089409909048783980951278841746","name":"knowYourCustomer","signature":"string claim"}],"deployedInTransaction":"0x1c9a5f80d3b47e6218ca03f95d7be41086c2d97fa5301be8c47d0f2635a9184b","isGlobal":false}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every trusted issuer the active system accepts claims from, including entries inherited through the registry chain.","summary":"List trusted issuers","x-dalp-auth":"session-or-api-key"}},"/api/v1/system/trusted-issuers/{issuerAddress}":{"put":{"tags":["Identities and claims"],"operationId":"v1SystemTrustedIssuers.update","parameters":[{"name":"issuerAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The issuer address and the hash of the registry transaction that carried the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustedIssuerMutationOutput"},"examples":{"example-1":{"value":{"txHash":"0x4f3d1a8c0b6e29d5741ac0f8b2e7d6390c5148aa9be3f207d4c8615ae0937b2c","issuerAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0294","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Sets the claim topics of a registered trusted issuer to exactly the list in the body. Send the complete set, because topics you leave out are removed.","summary":"Replace the claim topics of a trusted issuer","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"claimTopicIds":{"$ref":"#/components/schemas/TrustedIssuerClaimTopicIds"}},"required":["claimTopicIds"],"additionalProperties":false,"description":"Complete claim-topic set to store for the issuer named in the path. Topics you leave out are removed."}}},"required":true},"x-dalp-auth":"session-or-api-key"},"get":{"tags":["Identities and claims"],"operationId":"v1SystemTrustedIssuers.read","parameters":[{"name":"issuerAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"The trusted issuer resolved across the registry chain: identity address, operating wallet, claim topics it may attest to, and `isGlobal` when the entry is inherited. Read `claimTopics` to see which claims this issuer can sign. Write routes cannot change an inherited entry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustedIssuer_1"},"examples":{"example-1":{"value":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","account":{"id":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"},"claimTopics":[{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3307833626138646165623761616364336330646439333431373536383836653463373734636639663136353463656564363336383834336531323431383565663932","topicId":"26984799302505749158794800959285050858086405868089409909048783980951278841746","name":"knowYourCustomer","signature":"string claim"}],"deployedInTransaction":"0x1c9a5f80d3b47e6218ca03f95d7be41086c2d97fa5301be8c47d0f2635a9184b","isGlobal":false}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0294","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one trusted issuer resolved across the registry chain of the active system.","summary":"Read a trusted issuer","x-dalp-auth":"session-or-api-key"},"delete":{"tags":["Identities and claims"],"operationId":"v1SystemTrustedIssuers.delete","parameters":[{"name":"issuerAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The issuer address and the hash of the registry transaction that carried the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustedIssuerMutationOutput"},"examples":{"example-1":{"value":{"txHash":"0x4f3d1a8c0b6e29d5741ac0f8b2e7d6390c5148aa9be3f207d4c8615ae0937b2c","issuerAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12036","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-0005","DALP-12034","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-12035","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-0294","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12038","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes the issuer from the trusted issuers registry of the active system, so that system stops treating claims signed by the issuer as trusted.","summary":"Remove a trusted issuer","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustedIssuerDeleteBody"}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/system/trusted-issuers/{issuerAddress}/topics":{"get":{"tags":["Identities and claims"],"operationId":"v1SystemTrustedIssuers.topics","parameters":[{"name":"issuerAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"Claim topics the issuer may attest to, with each name and signature resolved from the topic scheme registry of the active system.","content":{"application/json":{"schema":{"type":"object","properties":{"issuerAddress":{"$ref":"#/components/schemas/EvmAddress"},"claimTopics":{"type":"array","items":{"$ref":"#/components/schemas/TrustedIssuerTopic"}}},"required":["issuerAddress","claimTopics"],"additionalProperties":false,"description":"Claim topics the issuer may attest to, with each name and signature resolved from the topic scheme registry of the active system."},"examples":{"example-1":{"value":{"issuerAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","claimTopics":[{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3307833626138646165623761616364336330646439333431373536383836653463373734636639663136353463656564363336383834336531323431383565663932","topicId":"26984799302505749158794800959285050858086405868089409909048783980951278841746","name":"knowYourCustomer","signature":"string claim"}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0082","DALP-0083","DALP-0084","DALP-12103","DALP-12107","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the claim topics the issuer may attest to, with each name and signature resolved from the topic scheme registry of the active system.","summary":"List the claim topics of a trusted issuer","x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/add-compliance-module":{"post":{"tags":["Compliance rules"],"operationId":"v1Token.addComplianceModule","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The re-read token after the module is bound. This v1 route waits for the transaction to settle and returns the token itself rather than a status URL.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"$ref":"#/components/schemas/EvmAddress"},"complianceContract":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The per-token SMARTCompliance contract address that hosts this token's compliance modules. Null when not yet indexed."},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The most recently indexed per-token identity registry contract that controls which addresses are eligible to hold this token."},"type":{"anyOf":[{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal"],"description":"Type of financial asset"},{"type":"string","minLength":1,"description":"Custom asset type template slug"}],"description":"Asset type: known system type or custom template slug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"The name of the token","examples":["Acme Growth Bond"]},"symbol":{"type":"string","description":"The symbol of the token","examples":["ACME25"]},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned URL for the token's brand logo, or null when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal_10"},"basePriceCurrencyCode":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"description":"The base price currency code of the token"},"totalSupply":{"$ref":"#/components/schemas/BigDecimal_11"},"totalSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"extensions":{"type":"array","items":{"type":"string","enum":["ACCESS_MANAGED","BOND","BURNABLE","CAPPED","COLLATERAL","CONFIGURABLE","CUSTODIAN","FUND","HISTORICAL_BALANCES","METADATA","PAUSABLE","REDEEMABLE","YIELD"],"description":"Token extension capability"},"description":"The extensions of the token"},"implementsERC3643":{"type":"boolean","description":"Whether the token implements ERC3643"},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, null = unknown."},"implementsSMART":{"type":"boolean","description":"Whether the token implements SMART"},"identity":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"isContract":{"type":"boolean"},"registered":{"anyOf":[{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true],"description":"Always `true` on this arm. The identity is ACTIVE in the registry.","examples":[true]},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country the registry records for the identity, as an ISO 3166-1 alpha-2 code, or `null` when the stored numeric code maps to no country.","examples":["BE"]}},"required":["isRegistered","country"],"additionalProperties":false,"description":"Identity is registered and ACTIVE. `country` is the stored ISO alpha-2 code when one is set.","examples":[{"isRegistered":true,"country":"BE"}]},{"type":"boolean","enum":[false],"description":"`false` means the identity is not registered in this registry.","examples":[false]}],"description":"Registration state. An object with `isRegistered: true` is ACTIVE. The literal `false` means not registered.","examples":[{"isRegistered":true,"country":"BE"},false]},"claims":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"signature":{"type":"string"},"revoked":{"type":"boolean"},"issuer":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]}},"required":["id","account"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false}},"isTrusted":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","signature","revoked","issuer","values"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","account","isContract"],"additionalProperties":false,"description":"Identity associated with this token"},"pausable":{"type":"object","properties":{"paused":{"type":"boolean","description":"Whether transfers and most writes are paused on this token.","examples":[false,true]}},"required":["paused"],"additionalProperties":false,"description":"Pause state of the token. When `paused` is true, holders cannot transfer until an admin unpauses.","examples":[{"paused":false}]},"collateral":{"anyOf":[{"type":"object","properties":{"collateral":{"anyOf":[{"$ref":"#/components/schemas/BigDecimal"},{"type":"null"}]},"collateralExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"expiryTimestamp":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"The expiry timestamp of the collateral"}},"required":["expiryTimestamp"],"additionalProperties":false},{"type":"null"}],"description":"The collateral of the token"},"capped":{"anyOf":[{"type":"object","properties":{"cap":{"$ref":"#/components/schemas/BigDecimal"},"capExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["cap","capExact"],"additionalProperties":false},{"type":"null"}],"description":"The max supply of the token"},"createdBy":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"The user who created the token","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"redeemable":{"anyOf":[{"type":"object","properties":{"redeemedAmount":{"$ref":"#/components/schemas/BigDecimal"},"redeemedAmountExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["redeemedAmount"],"additionalProperties":false},{"type":"null"}],"description":"The amount of tokens redeemed"},"yield":{"anyOf":[{"type":"object","properties":{"schedule":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Trading symbol for the asset","examples":["ETH","BTC","USDC","AAPL"]},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset used to denominate bond face value or yield payments."}},"required":["id","denominationAsset"],"additionalProperties":false},{"type":"null"}]}},"required":["schedule"],"additionalProperties":false},{"type":"null"}],"description":"The yield of the token"},"bond":{"anyOf":[{"type":"object","properties":{"faceValue":{"$ref":"#/components/schemas/BigDecimal"},"faceValueExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"isMatured":{"type":"boolean","description":"Whether the bond is matured"},"maturityDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalRedeemed":{"$ref":"#/components/schemas/BigDecimal"},"totalRedeemedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Trading symbol for the asset","examples":["ETH","BTC","USDC","AAPL"]},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset used to denominate bond face value or yield payments."}},"required":["faceValue","faceValueExact","isMatured","maturityDate","totalRedeemed","totalRedeemedExact","denominationAsset"],"additionalProperties":false},{"type":"null"}],"description":"The bond of the token"},"fund":{"anyOf":[{"type":"object","properties":{"managementFeeBps":{"$ref":"#/components/schemas/BigDecimal"}},"required":["managementFeeBps"],"additionalProperties":false},{"type":"null"}],"description":"The fund of the token"},"accessControl":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"admin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"auditor":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimPolicyManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimIssuer":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"complianceManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"custodian":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"emergency":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"feedsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"fundsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"gasManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"governance":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"organisationIdentityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"saleAdmin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"supplyManagement":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"trustedIssuersMetaRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonManager":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"roleAdmins":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false,"description":"The access control of the token"},"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"type":"object","properties":{"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"}},"required":["typeId"],"additionalProperties":false}},"required":["id","complianceModule"],"additionalProperties":false},"description":"Enabled compliance modules for this token"},"userPermissions":{"type":"object","properties":{"roles":{"type":"object","properties":{"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"custodian":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"emergency":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"fundsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"governance":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"saleAdmin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"supplyManagement":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false,"description":"The roles of the user for the token"},"actions":{"type":"object","properties":{"burn":{"type":"boolean"},"grantRole":{"type":"boolean"},"grantRoleByParticipant":{"type":"boolean"},"revokeRole":{"type":"boolean"},"revokeRoleByParticipant":{"type":"boolean"},"mint":{"type":"boolean"},"pause":{"type":"boolean"},"addComplianceModule":{"type":"boolean"},"approve":{"type":"boolean"},"forcedRecover":{"type":"boolean"},"freezeAddress":{"type":"boolean"},"recoverERC20":{"type":"boolean"},"recoverTokens":{"type":"boolean"},"redeem":{"type":"boolean"},"mature":{"type":"boolean"},"removeComplianceModule":{"type":"boolean"},"setCap":{"type":"boolean"},"setComplianceModuleParams":{"type":"boolean"},"setYieldSchedule":{"type":"boolean"},"topUpDenominationAsset":{"type":"boolean"},"withdrawDenominationAsset":{"type":"boolean"},"transfer":{"type":"boolean"},"forcedTransfer":{"type":"boolean"},"unpause":{"type":"boolean"},"updateCollateral":{"type":"boolean"},"freezePartial":{"type":"boolean"},"unfreezePartial":{"type":"boolean"},"claimIssue":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"setMetadata":{"type":"boolean"},"removeMetadata":{"type":"boolean"},"setAumFeeBps":{"type":"boolean"},"setAumFeeRecipient":{"type":"boolean"},"approveTransfer":{"type":"boolean"},"revokeTransferApproval":{"type":"boolean"},"collectAumFee":{"type":"boolean"},"freezeAumFeeRate":{"type":"boolean"},"claimYield":{"type":"boolean"},"setYieldTreasury":{"type":"boolean"},"matureEarly":{"type":"boolean"},"setMaturityTreasury":{"type":"boolean"},"topUpMaturityTreasury":{"type":"boolean"},"topUpYieldTreasury":{"type":"boolean"},"topUpBondDenomination":{"type":"boolean"},"setTransactionFeeRates":{"type":"boolean"},"setTransactionFeeRecipient":{"type":"boolean"},"freezeTransactionFeeRates":{"type":"boolean"},"setExternalTransactionFees":{"type":"boolean"},"setExternalTransactionFeeRecipient":{"type":"boolean"},"setExternalTransactionFeeToken":{"type":"boolean"},"freezeExternalTransactionFees":{"type":"boolean"},"setTransactionFeeAccountingRates":{"type":"boolean"},"setTransactionFeeAccountingRecipient":{"type":"boolean"},"freezeTransactionFeeAccountingRates":{"type":"boolean"},"reconcileFees":{"type":"boolean"},"setFeeExemption":{"type":"boolean"},"delegate":{"type":"boolean"},"delegateBySig":{"type":"boolean"},"permit":{"type":"boolean"},"publishTrigger":{"type":"boolean"},"disableTrigger":{"type":"boolean"},"setConversionWindow":{"type":"boolean"},"convert":{"type":"boolean"},"forceConvert":{"type":"boolean"},"addAuthorizedConverter":{"type":"boolean"},"removeAuthorizedConverter":{"type":"boolean"},"addHoldReserver":{"type":"boolean"},"removeHoldReserver":{"type":"boolean"},"setPrice":{"type":"boolean"},"featureAttach":{"type":"boolean"},"featureDetach":{"type":"boolean"},"featureRotate":{"type":"boolean"}},"required":["burn","grantRole","grantRoleByParticipant","revokeRole","revokeRoleByParticipant","mint","pause","addComplianceModule","approve","forcedRecover","freezeAddress","recoverERC20","recoverTokens","redeem","mature","removeComplianceModule","setCap","setComplianceModuleParams","setYieldSchedule","topUpDenominationAsset","withdrawDenominationAsset","transfer","forcedTransfer","unpause","updateCollateral","freezePartial","unfreezePartial","claimIssue","claimRevoke","setMetadata","removeMetadata","setAumFeeBps","setAumFeeRecipient","approveTransfer","revokeTransferApproval","collectAumFee","freezeAumFeeRate","claimYield","setYieldTreasury","matureEarly","setMaturityTreasury","topUpMaturityTreasury","topUpYieldTreasury","topUpBondDenomination","setTransactionFeeRates","setTransactionFeeRecipient","freezeTransactionFeeRates","setExternalTransactionFees","setExternalTransactionFeeRecipient","setExternalTransactionFeeToken","freezeExternalTransactionFees","setTransactionFeeAccountingRates","setTransactionFeeAccountingRecipient","freezeTransactionFeeAccountingRates","reconcileFees","setFeeExemption","delegate","delegateBySig","permit","publishTrigger","disableTrigger","setConversionWindow","convert","forceConvert","addAuthorizedConverter","removeAuthorizedConverter","addHoldReserver","removeHoldReserver","setPrice","featureAttach","featureDetach","featureRotate"],"additionalProperties":false,"description":"The actions on the token the user is allowed to execute"}},"required":["roles","actions"],"additionalProperties":false,"description":"The permissions of the user for the token"},"stats":{"anyOf":[{"type":"object","properties":{"balancesCount":{"type":"number","description":"The number of accounts holding this token"},"totalValueInBaseCurrency":{"$ref":"#/components/schemas/BigDecimal"},"totalBurned":{"$ref":"#/components/schemas/BigDecimal"},"totalBurnedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["balancesCount","totalValueInBaseCurrency","totalBurned","totalBurnedExact"],"additionalProperties":false},{"type":"null"}],"description":"The stats of the token"}},"required":["id","tokenFactory","complianceContract","identityRegistry","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","extensions","implementsERC3643","smartInterface","implementsSMART","pausable","collateral","capped","createdBy","redeemable","yield","bond","fund","complianceModuleConfigs","stats"],"additionalProperties":false,"description":"The re-read token after the module is bound. This v1 route waits for the transaction to settle and returns the token itself rather than a status URL.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}]},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12136","DALP-12193","DALP-12308","DALP-9084","DALP-9085","DALP-9430","DALP-9564"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0247","DALP-12283","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Module {registryAddress} is not registered in the compliance module registry","data":{"id":"DALP-0247","why":"The platform checked the compliance module registry for the given module address and found no matching entry. The module must be registered before it can be uninstalled.","fix":"Confirm the module address is correct and that it appears in the system's compliance module registry before calling this operation.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12285","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080","DALP-12286","DALP-12287"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12108","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Binds a registered compliance module to the token named by `tokenAddress` and stores the encoded parameters the module evaluates transfers against. The chain must already hold the implementation at `params.module` under `params.typeId`. When the token already holds a binding for that `typeId`, the route answers `409`. The caller needs the `governance` role for the token's system. This v1 route waits for the transaction to settle and returns the re-read token.","summary":"Install a compliance module on a token","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"anyOf":[{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"params":{"type":"object","properties":{"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"},"values":{},"module":{"$ref":"#/components/schemas/EvmAddress"}},"required":["typeId","values","module"],"additionalProperties":false}},"required":["params"],"additionalProperties":false,"description":"The module to bind and the parameters to encode for it. `params.module` is the registered implementation address and `params.typeId` is the identifier the chain holds it under; the two must agree. `params.values` holds the parameter shape that belongs to that `typeId`. Supply `walletVerification` when the caller's wallet requires a verification code for the transaction.","examples":[{"walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"},"params":{"typeId":"capped-v2","values":{"maxSupply":"1000000000000000000000000"},"module":"0x5FbDB2315678afecb367f032d93F642f64180aa3"}}]}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/remove-compliance-module":{"delete":{"tags":["Compliance rules"],"operationId":"v1Token.removeComplianceModule","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The re-read token after the module is unbound. This v1 route waits for the transaction to settle and returns the token itself rather than a status URL.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"$ref":"#/components/schemas/EvmAddress"},"complianceContract":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The per-token SMARTCompliance contract address that hosts this token's compliance modules. Null when not yet indexed."},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The most recently indexed per-token identity registry contract that controls which addresses are eligible to hold this token."},"type":{"anyOf":[{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal"],"description":"Type of financial asset"},{"type":"string","minLength":1,"description":"Custom asset type template slug"}],"description":"Asset type: known system type or custom template slug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"The name of the token","examples":["Acme Growth Bond"]},"symbol":{"type":"string","description":"The symbol of the token","examples":["ACME25"]},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned URL for the token's brand logo, or null when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal_10"},"basePriceCurrencyCode":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"description":"The base price currency code of the token"},"totalSupply":{"$ref":"#/components/schemas/BigDecimal_11"},"totalSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"extensions":{"type":"array","items":{"type":"string","enum":["ACCESS_MANAGED","BOND","BURNABLE","CAPPED","COLLATERAL","CONFIGURABLE","CUSTODIAN","FUND","HISTORICAL_BALANCES","METADATA","PAUSABLE","REDEEMABLE","YIELD"],"description":"Token extension capability"},"description":"The extensions of the token"},"implementsERC3643":{"type":"boolean","description":"Whether the token implements ERC3643"},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, null = unknown."},"implementsSMART":{"type":"boolean","description":"Whether the token implements SMART"},"identity":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"isContract":{"type":"boolean"},"registered":{"anyOf":[{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true],"description":"Always `true` on this arm. The identity is ACTIVE in the registry.","examples":[true]},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country the registry records for the identity, as an ISO 3166-1 alpha-2 code, or `null` when the stored numeric code maps to no country.","examples":["BE"]}},"required":["isRegistered","country"],"additionalProperties":false,"description":"Identity is registered and ACTIVE. `country` is the stored ISO alpha-2 code when one is set.","examples":[{"isRegistered":true,"country":"BE"}]},{"type":"boolean","enum":[false],"description":"`false` means the identity is not registered in this registry.","examples":[false]}],"description":"Registration state. An object with `isRegistered: true` is ACTIVE. The literal `false` means not registered.","examples":[{"isRegistered":true,"country":"BE"},false]},"claims":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"signature":{"type":"string"},"revoked":{"type":"boolean"},"issuer":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]}},"required":["id","account"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false}},"isTrusted":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","signature","revoked","issuer","values"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","account","isContract"],"additionalProperties":false,"description":"Identity associated with this token"},"pausable":{"type":"object","properties":{"paused":{"type":"boolean","description":"Whether transfers and most writes are paused on this token.","examples":[false,true]}},"required":["paused"],"additionalProperties":false,"description":"Pause state of the token. When `paused` is true, holders cannot transfer until an admin unpauses.","examples":[{"paused":false}]},"collateral":{"anyOf":[{"type":"object","properties":{"collateral":{"anyOf":[{"$ref":"#/components/schemas/BigDecimal"},{"type":"null"}]},"collateralExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"expiryTimestamp":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"The expiry timestamp of the collateral"}},"required":["expiryTimestamp"],"additionalProperties":false},{"type":"null"}],"description":"The collateral of the token"},"capped":{"anyOf":[{"type":"object","properties":{"cap":{"$ref":"#/components/schemas/BigDecimal"},"capExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["cap","capExact"],"additionalProperties":false},{"type":"null"}],"description":"The max supply of the token"},"createdBy":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"The user who created the token","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"redeemable":{"anyOf":[{"type":"object","properties":{"redeemedAmount":{"$ref":"#/components/schemas/BigDecimal"},"redeemedAmountExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["redeemedAmount"],"additionalProperties":false},{"type":"null"}],"description":"The amount of tokens redeemed"},"yield":{"anyOf":[{"type":"object","properties":{"schedule":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Trading symbol for the asset","examples":["ETH","BTC","USDC","AAPL"]},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset used to denominate bond face value or yield payments."}},"required":["id","denominationAsset"],"additionalProperties":false},{"type":"null"}]}},"required":["schedule"],"additionalProperties":false},{"type":"null"}],"description":"The yield of the token"},"bond":{"anyOf":[{"type":"object","properties":{"faceValue":{"$ref":"#/components/schemas/BigDecimal"},"faceValueExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"isMatured":{"type":"boolean","description":"Whether the bond is matured"},"maturityDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalRedeemed":{"$ref":"#/components/schemas/BigDecimal"},"totalRedeemedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Trading symbol for the asset","examples":["ETH","BTC","USDC","AAPL"]},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset used to denominate bond face value or yield payments."}},"required":["faceValue","faceValueExact","isMatured","maturityDate","totalRedeemed","totalRedeemedExact","denominationAsset"],"additionalProperties":false},{"type":"null"}],"description":"The bond of the token"},"fund":{"anyOf":[{"type":"object","properties":{"managementFeeBps":{"$ref":"#/components/schemas/BigDecimal"}},"required":["managementFeeBps"],"additionalProperties":false},{"type":"null"}],"description":"The fund of the token"},"accessControl":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"admin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"auditor":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimPolicyManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimIssuer":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"complianceManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"custodian":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"emergency":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"feedsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"fundsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"gasManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"governance":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"organisationIdentityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"saleAdmin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"supplyManagement":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"trustedIssuersMetaRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonManager":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"roleAdmins":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false,"description":"The access control of the token"},"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"type":"object","properties":{"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"}},"required":["typeId"],"additionalProperties":false}},"required":["id","complianceModule"],"additionalProperties":false},"description":"Enabled compliance modules for this token"},"userPermissions":{"type":"object","properties":{"roles":{"type":"object","properties":{"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"custodian":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"emergency":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"fundsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"governance":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"saleAdmin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"supplyManagement":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false,"description":"The roles of the user for the token"},"actions":{"type":"object","properties":{"burn":{"type":"boolean"},"grantRole":{"type":"boolean"},"grantRoleByParticipant":{"type":"boolean"},"revokeRole":{"type":"boolean"},"revokeRoleByParticipant":{"type":"boolean"},"mint":{"type":"boolean"},"pause":{"type":"boolean"},"addComplianceModule":{"type":"boolean"},"approve":{"type":"boolean"},"forcedRecover":{"type":"boolean"},"freezeAddress":{"type":"boolean"},"recoverERC20":{"type":"boolean"},"recoverTokens":{"type":"boolean"},"redeem":{"type":"boolean"},"mature":{"type":"boolean"},"removeComplianceModule":{"type":"boolean"},"setCap":{"type":"boolean"},"setComplianceModuleParams":{"type":"boolean"},"setYieldSchedule":{"type":"boolean"},"topUpDenominationAsset":{"type":"boolean"},"withdrawDenominationAsset":{"type":"boolean"},"transfer":{"type":"boolean"},"forcedTransfer":{"type":"boolean"},"unpause":{"type":"boolean"},"updateCollateral":{"type":"boolean"},"freezePartial":{"type":"boolean"},"unfreezePartial":{"type":"boolean"},"claimIssue":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"setMetadata":{"type":"boolean"},"removeMetadata":{"type":"boolean"},"setAumFeeBps":{"type":"boolean"},"setAumFeeRecipient":{"type":"boolean"},"approveTransfer":{"type":"boolean"},"revokeTransferApproval":{"type":"boolean"},"collectAumFee":{"type":"boolean"},"freezeAumFeeRate":{"type":"boolean"},"claimYield":{"type":"boolean"},"setYieldTreasury":{"type":"boolean"},"matureEarly":{"type":"boolean"},"setMaturityTreasury":{"type":"boolean"},"topUpMaturityTreasury":{"type":"boolean"},"topUpYieldTreasury":{"type":"boolean"},"topUpBondDenomination":{"type":"boolean"},"setTransactionFeeRates":{"type":"boolean"},"setTransactionFeeRecipient":{"type":"boolean"},"freezeTransactionFeeRates":{"type":"boolean"},"setExternalTransactionFees":{"type":"boolean"},"setExternalTransactionFeeRecipient":{"type":"boolean"},"setExternalTransactionFeeToken":{"type":"boolean"},"freezeExternalTransactionFees":{"type":"boolean"},"setTransactionFeeAccountingRates":{"type":"boolean"},"setTransactionFeeAccountingRecipient":{"type":"boolean"},"freezeTransactionFeeAccountingRates":{"type":"boolean"},"reconcileFees":{"type":"boolean"},"setFeeExemption":{"type":"boolean"},"delegate":{"type":"boolean"},"delegateBySig":{"type":"boolean"},"permit":{"type":"boolean"},"publishTrigger":{"type":"boolean"},"disableTrigger":{"type":"boolean"},"setConversionWindow":{"type":"boolean"},"convert":{"type":"boolean"},"forceConvert":{"type":"boolean"},"addAuthorizedConverter":{"type":"boolean"},"removeAuthorizedConverter":{"type":"boolean"},"addHoldReserver":{"type":"boolean"},"removeHoldReserver":{"type":"boolean"},"setPrice":{"type":"boolean"},"featureAttach":{"type":"boolean"},"featureDetach":{"type":"boolean"},"featureRotate":{"type":"boolean"}},"required":["burn","grantRole","grantRoleByParticipant","revokeRole","revokeRoleByParticipant","mint","pause","addComplianceModule","approve","forcedRecover","freezeAddress","recoverERC20","recoverTokens","redeem","mature","removeComplianceModule","setCap","setComplianceModuleParams","setYieldSchedule","topUpDenominationAsset","withdrawDenominationAsset","transfer","forcedTransfer","unpause","updateCollateral","freezePartial","unfreezePartial","claimIssue","claimRevoke","setMetadata","removeMetadata","setAumFeeBps","setAumFeeRecipient","approveTransfer","revokeTransferApproval","collectAumFee","freezeAumFeeRate","claimYield","setYieldTreasury","matureEarly","setMaturityTreasury","topUpMaturityTreasury","topUpYieldTreasury","topUpBondDenomination","setTransactionFeeRates","setTransactionFeeRecipient","freezeTransactionFeeRates","setExternalTransactionFees","setExternalTransactionFeeRecipient","setExternalTransactionFeeToken","freezeExternalTransactionFees","setTransactionFeeAccountingRates","setTransactionFeeAccountingRecipient","freezeTransactionFeeAccountingRates","reconcileFees","setFeeExemption","delegate","delegateBySig","permit","publishTrigger","disableTrigger","setConversionWindow","convert","forceConvert","addAuthorizedConverter","removeAuthorizedConverter","addHoldReserver","removeHoldReserver","setPrice","featureAttach","featureDetach","featureRotate"],"additionalProperties":false,"description":"The actions on the token the user is allowed to execute"}},"required":["roles","actions"],"additionalProperties":false,"description":"The permissions of the user for the token"},"stats":{"anyOf":[{"type":"object","properties":{"balancesCount":{"type":"number","description":"The number of accounts holding this token"},"totalValueInBaseCurrency":{"$ref":"#/components/schemas/BigDecimal"},"totalBurned":{"$ref":"#/components/schemas/BigDecimal"},"totalBurnedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["balancesCount","totalValueInBaseCurrency","totalBurned","totalBurnedExact"],"additionalProperties":false},{"type":"null"}],"description":"The stats of the token"}},"required":["id","tokenFactory","complianceContract","identityRegistry","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","extensions","implementsERC3643","smartInterface","implementsSMART","pausable","collateral","capped","createdBy","redeemable","yield","bond","fund","complianceModuleConfigs","stats"],"additionalProperties":false,"description":"The re-read token after the module is unbound. This v1 route waits for the transaction to settle and returns the token itself rather than a status URL.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}]},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12136","DALP-12193","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0247","DALP-12283","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Module {registryAddress} is not registered in the compliance module registry","data":{"id":"DALP-0247","why":"The platform checked the compliance module registry for the given module address and found no matching entry. The module must be registered before it can be uninstalled.","fix":"Confirm the module address is correct and that it appears in the system's compliance module registry before calling this operation.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12285","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286","DALP-12287"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12108","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Unbinds the module at `moduleAddress` so it stops evaluating transfers of the token named by `tokenAddress`. When the token holds several bindings that share the module's `typeId`, name the one to remove through `instanceAddress`. The caller needs the `governance` role for the token's system. This v1 route waits for the transaction to settle and returns the re-read token.","summary":"Remove a compliance module from a token","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"anyOf":[{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"moduleAddress":{"$ref":"#/components/schemas/EvmAddress"},"instanceAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"EIP-55 checksummed address of the binding to unbind. Send it when the token holds more than one binding that shares the module's `typeId`, because the route answers `409` when a request leaves it out. Leave it out when the token holds a single binding for that `typeId`, and the route resolves the binding from the `typeId` alone."}},"required":["moduleAddress"],"additionalProperties":false,"description":"The module to unbind. `moduleAddress` is the registered implementation address. Add `instanceAddress` when the token holds more than one binding of that module's `typeId`, otherwise the route resolves the binding from the `typeId` alone.","examples":[{"walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"},"moduleAddress":"0x5FbDB2315678afecb367f032d93F642f64180aa3","instanceAddress":"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512"}]}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/token/{tokenAddress}/compliance-module-params":{"put":{"tags":["Compliance rules"],"operationId":"v1Token.setComplianceModuleParams","parameters":[{"name":"tokenAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true},{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The re-read token after the module parameters are replaced. This v1 route waits for the transaction to settle and returns the token itself rather than a status URL.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"$ref":"#/components/schemas/EvmAddress"},"complianceContract":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The per-token SMARTCompliance contract address that hosts this token's compliance modules. Null when not yet indexed."},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The most recently indexed per-token identity registry contract that controls which addresses are eligible to hold this token."},"type":{"anyOf":[{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal"],"description":"Type of financial asset"},{"type":"string","minLength":1,"description":"Custom asset type template slug"}],"description":"Asset type: known system type or custom template slug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"The name of the token","examples":["Acme Growth Bond"]},"symbol":{"type":"string","description":"The symbol of the token","examples":["ACME25"]},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned URL for the token's brand logo, or null when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal_10"},"basePriceCurrencyCode":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"description":"The base price currency code of the token"},"totalSupply":{"$ref":"#/components/schemas/BigDecimal_11"},"totalSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"extensions":{"type":"array","items":{"type":"string","enum":["ACCESS_MANAGED","BOND","BURNABLE","CAPPED","COLLATERAL","CONFIGURABLE","CUSTODIAN","FUND","HISTORICAL_BALANCES","METADATA","PAUSABLE","REDEEMABLE","YIELD"],"description":"Token extension capability"},"description":"The extensions of the token"},"implementsERC3643":{"type":"boolean","description":"Whether the token implements ERC3643"},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, null = unknown."},"implementsSMART":{"type":"boolean","description":"Whether the token implements SMART"},"identity":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"isContract":{"type":"boolean"},"registered":{"anyOf":[{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true],"description":"Always `true` on this arm. The identity is ACTIVE in the registry.","examples":[true]},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country the registry records for the identity, as an ISO 3166-1 alpha-2 code, or `null` when the stored numeric code maps to no country.","examples":["BE"]}},"required":["isRegistered","country"],"additionalProperties":false,"description":"Identity is registered and ACTIVE. `country` is the stored ISO alpha-2 code when one is set.","examples":[{"isRegistered":true,"country":"BE"}]},{"type":"boolean","enum":[false],"description":"`false` means the identity is not registered in this registry.","examples":[false]}],"description":"Registration state. An object with `isRegistered: true` is ACTIVE. The literal `false` means not registered.","examples":[{"isRegistered":true,"country":"BE"},false]},"claims":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"signature":{"type":"string"},"revoked":{"type":"boolean"},"issuer":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]}},"required":["id","account"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false}},"isTrusted":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","signature","revoked","issuer","values"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","account","isContract"],"additionalProperties":false,"description":"Identity associated with this token"},"pausable":{"type":"object","properties":{"paused":{"type":"boolean","description":"Whether transfers and most writes are paused on this token.","examples":[false,true]}},"required":["paused"],"additionalProperties":false,"description":"Pause state of the token. When `paused` is true, holders cannot transfer until an admin unpauses.","examples":[{"paused":false}]},"collateral":{"anyOf":[{"type":"object","properties":{"collateral":{"anyOf":[{"$ref":"#/components/schemas/BigDecimal"},{"type":"null"}]},"collateralExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"expiryTimestamp":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"The expiry timestamp of the collateral"}},"required":["expiryTimestamp"],"additionalProperties":false},{"type":"null"}],"description":"The collateral of the token"},"capped":{"anyOf":[{"type":"object","properties":{"cap":{"$ref":"#/components/schemas/BigDecimal"},"capExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["cap","capExact"],"additionalProperties":false},{"type":"null"}],"description":"The max supply of the token"},"createdBy":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"The user who created the token","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"redeemable":{"anyOf":[{"type":"object","properties":{"redeemedAmount":{"$ref":"#/components/schemas/BigDecimal"},"redeemedAmountExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["redeemedAmount"],"additionalProperties":false},{"type":"null"}],"description":"The amount of tokens redeemed"},"yield":{"anyOf":[{"type":"object","properties":{"schedule":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Trading symbol for the asset","examples":["ETH","BTC","USDC","AAPL"]},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset used to denominate bond face value or yield payments."}},"required":["id","denominationAsset"],"additionalProperties":false},{"type":"null"}]}},"required":["schedule"],"additionalProperties":false},{"type":"null"}],"description":"The yield of the token"},"bond":{"anyOf":[{"type":"object","properties":{"faceValue":{"$ref":"#/components/schemas/BigDecimal"},"faceValueExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"isMatured":{"type":"boolean","description":"Whether the bond is matured"},"maturityDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalRedeemed":{"$ref":"#/components/schemas/BigDecimal"},"totalRedeemedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Trading symbol for the asset","examples":["ETH","BTC","USDC","AAPL"]},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset used to denominate bond face value or yield payments."}},"required":["faceValue","faceValueExact","isMatured","maturityDate","totalRedeemed","totalRedeemedExact","denominationAsset"],"additionalProperties":false},{"type":"null"}],"description":"The bond of the token"},"fund":{"anyOf":[{"type":"object","properties":{"managementFeeBps":{"$ref":"#/components/schemas/BigDecimal"}},"required":["managementFeeBps"],"additionalProperties":false},{"type":"null"}],"description":"The fund of the token"},"accessControl":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"admin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"auditor":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimPolicyManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"claimIssuer":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"complianceManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"custodian":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"emergency":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"feedsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"fundsManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"gasManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"governance":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"identityRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"organisationIdentityManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"saleAdmin":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"supplyManagement":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"systemModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenFactoryRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"tokenManager":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"trustedIssuersMetaRegistryModule":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},"addonManager":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false}},{"type":"null"}]},"roleAdmins":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false,"description":"The access control of the token"},"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"type":"object","properties":{"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"}},"required":["typeId"],"additionalProperties":false}},"required":["id","complianceModule"],"additionalProperties":false},"description":"Enabled compliance modules for this token"},"userPermissions":{"type":"object","properties":{"roles":{"type":"object","properties":{"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"custodian":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"emergency":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"fundsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"governance":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"saleAdmin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"supplyManagement":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false,"description":"The roles of the user for the token"},"actions":{"type":"object","properties":{"burn":{"type":"boolean"},"grantRole":{"type":"boolean"},"grantRoleByParticipant":{"type":"boolean"},"revokeRole":{"type":"boolean"},"revokeRoleByParticipant":{"type":"boolean"},"mint":{"type":"boolean"},"pause":{"type":"boolean"},"addComplianceModule":{"type":"boolean"},"approve":{"type":"boolean"},"forcedRecover":{"type":"boolean"},"freezeAddress":{"type":"boolean"},"recoverERC20":{"type":"boolean"},"recoverTokens":{"type":"boolean"},"redeem":{"type":"boolean"},"mature":{"type":"boolean"},"removeComplianceModule":{"type":"boolean"},"setCap":{"type":"boolean"},"setComplianceModuleParams":{"type":"boolean"},"setYieldSchedule":{"type":"boolean"},"topUpDenominationAsset":{"type":"boolean"},"withdrawDenominationAsset":{"type":"boolean"},"transfer":{"type":"boolean"},"forcedTransfer":{"type":"boolean"},"unpause":{"type":"boolean"},"updateCollateral":{"type":"boolean"},"freezePartial":{"type":"boolean"},"unfreezePartial":{"type":"boolean"},"claimIssue":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"setMetadata":{"type":"boolean"},"removeMetadata":{"type":"boolean"},"setAumFeeBps":{"type":"boolean"},"setAumFeeRecipient":{"type":"boolean"},"approveTransfer":{"type":"boolean"},"revokeTransferApproval":{"type":"boolean"},"collectAumFee":{"type":"boolean"},"freezeAumFeeRate":{"type":"boolean"},"claimYield":{"type":"boolean"},"setYieldTreasury":{"type":"boolean"},"matureEarly":{"type":"boolean"},"setMaturityTreasury":{"type":"boolean"},"topUpMaturityTreasury":{"type":"boolean"},"topUpYieldTreasury":{"type":"boolean"},"topUpBondDenomination":{"type":"boolean"},"setTransactionFeeRates":{"type":"boolean"},"setTransactionFeeRecipient":{"type":"boolean"},"freezeTransactionFeeRates":{"type":"boolean"},"setExternalTransactionFees":{"type":"boolean"},"setExternalTransactionFeeRecipient":{"type":"boolean"},"setExternalTransactionFeeToken":{"type":"boolean"},"freezeExternalTransactionFees":{"type":"boolean"},"setTransactionFeeAccountingRates":{"type":"boolean"},"setTransactionFeeAccountingRecipient":{"type":"boolean"},"freezeTransactionFeeAccountingRates":{"type":"boolean"},"reconcileFees":{"type":"boolean"},"setFeeExemption":{"type":"boolean"},"delegate":{"type":"boolean"},"delegateBySig":{"type":"boolean"},"permit":{"type":"boolean"},"publishTrigger":{"type":"boolean"},"disableTrigger":{"type":"boolean"},"setConversionWindow":{"type":"boolean"},"convert":{"type":"boolean"},"forceConvert":{"type":"boolean"},"addAuthorizedConverter":{"type":"boolean"},"removeAuthorizedConverter":{"type":"boolean"},"addHoldReserver":{"type":"boolean"},"removeHoldReserver":{"type":"boolean"},"setPrice":{"type":"boolean"},"featureAttach":{"type":"boolean"},"featureDetach":{"type":"boolean"},"featureRotate":{"type":"boolean"}},"required":["burn","grantRole","grantRoleByParticipant","revokeRole","revokeRoleByParticipant","mint","pause","addComplianceModule","approve","forcedRecover","freezeAddress","recoverERC20","recoverTokens","redeem","mature","removeComplianceModule","setCap","setComplianceModuleParams","setYieldSchedule","topUpDenominationAsset","withdrawDenominationAsset","transfer","forcedTransfer","unpause","updateCollateral","freezePartial","unfreezePartial","claimIssue","claimRevoke","setMetadata","removeMetadata","setAumFeeBps","setAumFeeRecipient","approveTransfer","revokeTransferApproval","collectAumFee","freezeAumFeeRate","claimYield","setYieldTreasury","matureEarly","setMaturityTreasury","topUpMaturityTreasury","topUpYieldTreasury","topUpBondDenomination","setTransactionFeeRates","setTransactionFeeRecipient","freezeTransactionFeeRates","setExternalTransactionFees","setExternalTransactionFeeRecipient","setExternalTransactionFeeToken","freezeExternalTransactionFees","setTransactionFeeAccountingRates","setTransactionFeeAccountingRecipient","freezeTransactionFeeAccountingRates","reconcileFees","setFeeExemption","delegate","delegateBySig","permit","publishTrigger","disableTrigger","setConversionWindow","convert","forceConvert","addAuthorizedConverter","removeAuthorizedConverter","addHoldReserver","removeHoldReserver","setPrice","featureAttach","featureDetach","featureRotate"],"additionalProperties":false,"description":"The actions on the token the user is allowed to execute"}},"required":["roles","actions"],"additionalProperties":false,"description":"The permissions of the user for the token"},"stats":{"anyOf":[{"type":"object","properties":{"balancesCount":{"type":"number","description":"The number of accounts holding this token"},"totalValueInBaseCurrency":{"$ref":"#/components/schemas/BigDecimal"},"totalBurned":{"$ref":"#/components/schemas/BigDecimal"},"totalBurnedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["balancesCount","totalValueInBaseCurrency","totalBurned","totalBurnedExact"],"additionalProperties":false},{"type":"null"}],"description":"The stats of the token"}},"required":["id","tokenFactory","complianceContract","identityRegistry","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","extensions","implementsERC3643","smartInterface","implementsSMART","pausable","collateral","capped","createdBy","redeemable","yield","bond","fund","complianceModuleConfigs","stats"],"additionalProperties":false,"description":"The re-read token after the module parameters are replaced. This v1 route waits for the transaction to settle and returns the token itself rather than a status URL.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}]},"examples":{"example-1":{"value":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12033","DALP-12136","DALP-12193","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0247","DALP-12283","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Module {registryAddress} is not registered in the compliance module registry","data":{"id":"DALP-0247","why":"The platform checked the compliance module registry for the given module address and found no matching entry. The module must be registered before it can be uninstalled.","fix":"Confirm the module address is correct and that it appears in the system's compliance module registry before calling this operation.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-12285","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0080","DALP-12286","DALP-12287"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"Input validation failed","data":{"id":"DALP-0080","why":"The request body or parameters did not match the API contract.","fix":"Check the request fields against the API documentation and retry with valid values.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12108","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Replaces the encoded parameters of an active binding on the token named by `tokenAddress` and leaves its scope as it stands. The binding must be active, and `params.typeId` must be the registered identifier of the module at `params.module`. The parameters of a `capital-raise-limit` binding never change after install, so this route rejects them with `409`. The caller needs the `governance` role for the token's system. This v1 route waits for the transaction to settle and returns the re-read token.","summary":"Replace the parameters of an installed compliance module","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletVerification":{"anyOf":[{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"params":{"type":"object","properties":{"typeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"},"values":{},"module":{"$ref":"#/components/schemas/EvmAddress"}},"required":["typeId","values","module"],"additionalProperties":false},"instanceAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"EIP-55 checksummed address of the binding to reconfigure. Send it when the token holds more than one binding that shares the module's `typeId`, because the route answers `409` when a request leaves it out. Leave it out when the token holds a single binding for that `typeId`, and the route resolves the binding from the `typeId` alone."}},"required":["params"],"additionalProperties":false,"description":"The replacement parameters for an active binding. `params.typeId` must be the registered identifier of the module on the chain. Add `instanceAddress` when the token holds more than one binding of that `typeId`.","examples":[{"walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"},"params":{"typeId":"capped-v2","values":{"maxSupply":"2500000000000000000000000"},"module":"0x5FbDB2315678afecb367f032d93F642f64180aa3"},"instanceAddress":"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512"}]}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-action-requests/{requestId}/fulfill":{"post":{"tags":["KYC"],"operationId":"v1UserKycActionRequest.fulfill","parameters":[{"name":"requestId","in":"path","schema":{"type":"string","minLength":1,"description":"ID of the action request to fulfill"},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"The closed action request, with the time the platform recorded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycActionRequestFulfillOutput"},"examples":{"example-1":{"value":{"id":"0194a7d5-1c9f-7b62-9d47-8e0a3f52c714","status":"fulfilled","fulfilledAt":"2026-06-05T14:05:00.000Z"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0417","DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC profile not found for this request","data":{"id":"DALP-0417","why":"The fulfill handler resolved the KYC version linked to the action request but found no KYC profile for the participant who owns that version. The profile row is required to clear the pending-update flag after fulfillment.","fix":"Verify the action request ID and that the participant has a KYC profile. If the profile was deleted, create a new one before retrying.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Closes an open action request that the caller owns and records the time. Supply the requested information first, because closing the request leaves the version unchanged.","summary":"Fulfill a KYC action request","x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/documents":{"get":{"tags":["KYC"],"operationId":"v1UserKycDocuments.list","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","minLength":1},"required":true}],"responses":{"200":{"description":"Documents attached to the named KYC version, each with type, file name, media type, size, and uploader.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"documentType":{"$ref":"#/components/schemas/KycDocumentType"},"fileName":{"type":"string"},"fileSize":{"type":"number"},"mimeType":{"type":"string"},"uploadedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"uploadedBy":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","documentType","fileName","fileSize","mimeType","uploadedAt","uploadedBy"],"additionalProperties":false}},"total":{"type":"number"}},"required":["items","total"],"additionalProperties":false,"description":"Documents attached to the named KYC version, each with type, file name, media type, size, and uploader."},"examples":{"example-1":{"value":{"items":[{"id":"0194a7d3-6b12-7e44-8a90-2c7f5d31b608","documentType":"proof_of_address","fileName":"proof-of-address.pdf","fileSize":28,"mimeType":"application/pdf","uploadedAt":"2026-06-04T09:58:00.000Z","uploadedBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"}],"total":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the documents attached to one KYC version. Each entry carries the document type, the file name, the media type, the size in bytes, and the participant who uploaded it.","summary":"List KYC version documents","x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/documents/{documentId}":{"delete":{"tags":["KYC"],"operationId":"v1UserKycDocuments.delete","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","minLength":1},"required":true},{"name":"documentId","in":"path","schema":{"type":"string","minLength":1},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"Confirmation that the named document was removed from the draft version.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"],"additionalProperties":false,"description":"Confirmation that the named document was removed from the draft version."},"examples":{"example-1":{"value":{"id":"0194a7d3-6b12-7e44-8a90-2c7f5d31b608","deleted":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes one document from the caller's own draft version. A version that sits under review keeps its documents.","summary":"Remove a KYC document","x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/documents/confirm":{"post":{"tags":["KYC"],"operationId":"v1UserKycDocuments.confirmUpload","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","description":"Identifier of the KYC version this request addresses."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"The stored document record after the upload is confirmed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionDocumentConfirmUploadOutput"},"examples":{"example-1":{"value":{"id":"0194a7d3-6b12-7e44-8a90-2c7f5d31b608","versionId":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","documentType":"proof_of_address","fileName":"proof-of-address.pdf","fileSize":28,"mimeType":"application/pdf","uploadedAt":"2026-06-04T09:58:00.000Z","uploadedBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Records a document after the caller uploaded the bytes to the issued upload URL. Send the object key from the upload-url response together with the file metadata.","summary":"Confirm a KYC document upload","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"objectKey":{"type":"string","minLength":1},"documentType":{"$ref":"#/components/schemas/KycDocumentType"},"fileName":{"type":"string","minLength":1,"maxLength":255},"fileSize":{"type":"integer"},"mimeType":{"$ref":"#/components/schemas/KycMimeType"}},"required":["objectKey","documentType","fileName","fileSize","mimeType"],"additionalProperties":false,"description":"Object key returned by the upload-url route together with the file metadata. Send this after the file bytes have been uploaded."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/documents/{documentId}/download-url":{"get":{"tags":["KYC"],"operationId":"v1UserKycDocuments.getDownloadUrl","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","minLength":1},"required":true},{"name":"documentId","in":"path","schema":{"type":"string","minLength":1},"required":true}],"responses":{"200":{"description":"A download link for the document, with its file name, media type, and link expiry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionDocumentGetDownloadUrlOutput"},"examples":{"example-1":{"value":{"downloadUrl":"/api/v2/kyc-profile-versions/0194a7d1-2f88-7c05-9b3a-51d0e7c4a962/documents/0194a7d3-6b12-7e44-8a90-2c7f5d31b608/download","fileName":"proof-of-address.pdf","mimeType":"application/pdf","expiresAt":"2026-06-05T15:05:00.000Z"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a download link for one document attached to a KYC version, together with the file name, the media type, and the link expiry.","summary":"Request a document download link","x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/documents/upload-url":{"post":{"tags":["KYC"],"operationId":"v1UserKycDocuments.getUploadUrl","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","description":"Identifier of the KYC version this request addresses."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"Signed upload URL for a new document on a draft version, plus the object key to confirm later.","content":{"application/json":{"schema":{"type":"object","properties":{"uploadUrl":{"type":"string","description":"Signed URL to PUT the file bytes to. The link expires at `expiresAt`."},"objectKey":{"type":"string","description":"Object key to send back on the confirm-upload route after the PUT succeeds."},"expiresAt":{"$ref":"#/components/schemas/TimestampEncoded"},"method":{"type":"string","enum":["PUT"],"description":"HTTP method the caller must use against `uploadUrl`. Always `PUT`."},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Headers the caller must include on the PUT to `uploadUrl`."}},"required":["uploadUrl","objectKey","expiresAt","method","headers"],"additionalProperties":false,"description":"Signed upload URL for a new document on a draft version, plus the object key to confirm later."},"examples":{"example-1":{"value":{"uploadUrl":"https://objects.example/upload/kyc/passport-amara-okafor.pdf?X-Amz-Expires=3600","objectKey":"kyc/0194a7d1-2f88-7c05-9b3a-51d0e7c4a962/passport-amara-okafor.pdf","expiresAt":"2026-06-05T15:05:00.000Z","method":"PUT","headers":{"Content-Type":"application/pdf"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a signed upload URL for a new document on a draft version. PUT the file to that URL, then confirm the upload.","summary":"Request a document upload link","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"documentType":{"$ref":"#/components/schemas/KycDocumentType"},"fileName":{"type":"string","minLength":1,"maxLength":255},"fileSize":{"type":"integer"},"mimeType":{"$ref":"#/components/schemas/KycMimeType"}},"required":["documentType","fileName","fileSize","mimeType"],"additionalProperties":false,"description":"File metadata used to issue a signed upload URL for a new document on a draft version."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profiles/{userId}":{"get":{"tags":["KYC"],"operationId":"v1UserKycProfile.read","parameters":[{"name":"userId","in":"path","schema":{"type":"string","minLength":1},"required":true}],"responses":{"200":{"description":"The KYC profile of one user: review status, pending-update flag, approved version, latest version, and open action-request count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileReadOutput"},"examples":{"example-1":{"value":{"id":"0193fa5d-4b17-7c88-8e51-9a2f0d6c3b71","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","status":"approved","hasPendingUpdate":false,"approvedVersion":{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","versionNumber":2,"firstName":"Amara","lastName":"Okafor","contentHash":"ad8bfb5243fffeb4db2aa581ae965be67c08059dd899e23a76afdb05d71bd8e0","approvedAt":"2026-06-05T14:05:00.000Z","approvedBy":"0193fa5e-7d20-7b63-9f14-8c5a2e70d419"},"latestVersion":{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","versionNumber":2,"status":"approved","isDraft":false,"createdAt":"2026-06-02T08:15:00.000Z"},"openActionRequestsCount":0,"createdAt":"2026-06-02T08:15:00.000Z","updatedAt":"2026-06-05T14:05:00.000Z"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the KYC profile of one user, with the review status, the pending-update flag, the approved version, the most recent version, and the number of open action requests. A user reads their own profile; reading another user's profile requires the claim issuer or identity manager role in the active organization.","summary":"Read a KYC profile","x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}":{"get":{"tags":["KYC"],"operationId":"v1UserKycVersion.read","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","minLength":1},"required":true}],"responses":{"200":{"description":"One KYC version with identity fields, submission and review trail, document count, and the flags that state what the calling participant does next.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionReadOutput"},"examples":{"example-1":{"value":{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","versionNumber":1,"status":"approved","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","firstName":"Amara","lastName":"Okafor","dob":"1988-04-12T00:00:00.000Z","country":"NL","residencyStatus":"resident","nationalId":"NL-8842-1177","createdAt":"2026-06-02T08:15:00.000Z","createdBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","submittedAt":"2026-06-04T10:22:00.000Z","submittedBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","reviewedAt":"2026-06-05T14:05:00.000Z","reviewedBy":"0193fa5e-7d20-7b63-9f14-8c5a2e70d419","reviewOutcome":"approved","reviewNotes":"Passport and address document match the submitted data.","rejectionReason":null,"documentsCount":2,"canEdit":false,"canSubmit":false,"canReview":false}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one KYC version with its identity fields, its submission and review trail, the number of attached documents, and the flags that state what the calling participant does next.","summary":"Read a KYC version","x-dalp-auth":"session-or-api-key"},"patch":{"tags":["KYC"],"operationId":"v1UserKycVersion.update","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","description":"Identifier of the KYC version this request addresses."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"The draft version as it now stands after the field update.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionUpdateOutput"},"examples":{"example-1":{"value":{"id":"0194a7d9-0e44-7a19-b6c3-72f81d4a0e55","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","versionNumber":2,"status":"draft","firstName":"Amara","lastName":"Okafor","dob":"1988-04-12T00:00:00.000Z","country":"NL","residencyStatus":"resident","nationalId":"NL-8842-1177","createdAt":"2026-06-08T09:40:00.000Z","createdBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Changes the identity fields on the caller's own draft version. A field that the request omits keeps its stored value. The version stays a draft.","summary":"Update a KYC draft version","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"lastName":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"dob":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},{"type":"null"}]},"country":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCodeNormalizedEncoded"},{"type":"null"}]},{"type":"null"}]},"residencyStatus":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}]},{"type":"null"}]},"nationalId":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]}},"additionalProperties":false,"description":"Identity fields to change on the caller's own draft. Omit a field to leave its stored value unchanged."}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/submit":{"post":{"tags":["KYC"],"operationId":"v1UserKycVersion.submit","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","minLength":1},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"The submitted version, with the submission time and the submitting participant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionSubmitOutput"},"examples":{"example-1":{"value":{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","status":"under_review","submittedAt":"2026-06-04T10:22:00.000Z","submittedBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Moves the caller's own draft version to `under_review` and records the submission time. A version under review holds its fields until a reviewer decides.","summary":"Submit a KYC version for review","x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/approve":{"post":{"tags":["KYC"],"operationId":"v1UserKycVersion.approve","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","description":"Identifier of the KYC version this request addresses."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"The approved version, with the recorded review decision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionApproveOutput"},"examples":{"example-1":{"value":{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","status":"approved","reviewOutcome":"approved","reviewedAt":"2026-06-05T14:05:00.000Z","reviewedBy":"0193fa5e-7d20-7b63-9f14-8c5a2e70d419","reviewNotes":"Passport and address document match the submitted data."}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Records an approval on a version that sits under review. The version becomes the approved version of the profile. This call requires the claim issuer or identity manager role.","summary":"Approve a KYC version","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reviewNotes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":false,"description":"Optional reviewer notes recorded with the approval."}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/reject":{"post":{"tags":["KYC"],"operationId":"v1UserKycVersion.reject","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","description":"Identifier of the KYC version this request addresses."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"The rejected version, with the recorded reason and reviewer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionRejectOutput"},"examples":{"example-1":{"value":{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","status":"rejected","reviewOutcome":"rejected","rejectionReason":"The address document dates from more than three months ago.","reviewedAt":"2026-06-05T14:05:00.000Z","reviewedBy":"0193fa5e-7d20-7b63-9f14-8c5a2e70d419"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Records a rejection with a reason on a version that sits under review. The rejected version keeps its data. This call requires the claim issuer or identity manager role.","summary":"Reject a KYC version","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rejectionReason":{"type":"string","minLength":10},"reviewNotes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["rejectionReason"],"additionalProperties":false,"description":"Reason the version is rejected, plus optional reviewer notes."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profile-versions/{versionId}/request-update":{"post":{"tags":["KYC"],"operationId":"v1UserKycVersion.requestUpdate","parameters":[{"name":"versionId","in":"path","schema":{"type":"string","description":"Identifier of the KYC version this request addresses."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"The version still under review and the action request this call opened.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionRequestUpdateOutput"},"examples":{"example-1":{"value":{"version":{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","status":"under_review"},"actionRequest":{"id":"0194a7d5-1c9f-7b62-9d47-8e0a3f52c714","status":"open","reason":"Upload a proof of address that a provider issued in the last three months.","requiredFields":["proof_of_address"],"dueAt":"2026-06-12T00:00:00.000Z","requestedAt":"2026-06-05T14:05:00.000Z"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Opens an action request against a version that sits under review. The version stays `under_review`. This call requires the claim issuer or identity manager role.","summary":"Request changes on a KYC version","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":10},"requiredFields":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"dueAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"reviewNotes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["reason"],"additionalProperties":false,"description":"What the reviewer needs the user to change, which fields to update, and when the request is due."}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/kyc-profiles/{userId}/versions":{"get":{"tags":["KYC"],"operationId":"v1UserKycVersions.list","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user this KYC request addresses. A user passes their own identifier; addressing another user requires the claim issuer or identity manager role."},"required":true},{"name":"limit","in":"query","schema":{"type":"number"},"required":false},{"name":"offset","in":"query","schema":{"type":"number"},"required":false},{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"statuses","in":"query","schema":{"type":"array","items":{"type":"string","enum":["draft","submitted","under_review","approved","rejected"],"description":"KYC version workflow status"}},"required":false}],"responses":{"200":{"description":"The KYC versions of the named user, each with review timestamps and derived state flags.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionNumber":{"type":"number"},"status":{"$ref":"#/components/schemas/KycVersionStatus"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"submittedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"submittedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"reviewedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reviewOutcome":{"anyOf":[{"$ref":"#/components/schemas/KycReviewOutcome"},{"type":"null"}]},"isDraft":{"type":"boolean"},"isUnderReview":{"type":"boolean"},"isApproved":{"type":"boolean"},"isCurrent":{"type":"boolean"}},"required":["id","versionNumber","status","createdAt","createdBy","submittedAt","submittedBy","reviewedAt","reviewedBy","reviewOutcome","isDraft","isUnderReview","isApproved","isCurrent"],"additionalProperties":false}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"approvedVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","total","limit","offset","approvedVersionId"],"additionalProperties":false,"description":"The KYC versions of the named user, each with review timestamps and derived state flags."},"examples":{"example-1":{"value":{"items":[{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","versionNumber":1,"status":"approved","createdAt":"2026-06-02T08:15:00.000Z","createdBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","submittedAt":"2026-06-04T10:22:00.000Z","submittedBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","reviewedAt":"2026-06-05T14:05:00.000Z","reviewedBy":"0193fa5e-7d20-7b63-9f14-8c5a2e70d419","reviewOutcome":"approved","isDraft":false,"isUnderReview":false,"isApproved":true,"isCurrent":true},{"id":"0194a7d9-0e44-7a19-b6c3-72f81d4a0e55","versionNumber":2,"status":"draft","createdAt":"2026-06-08T09:40:00.000Z","createdBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","submittedAt":null,"submittedBy":null,"reviewedAt":null,"reviewedBy":null,"reviewOutcome":null,"isDraft":true,"isUnderReview":false,"isApproved":false,"isCurrent":false}],"total":2,"limit":10,"offset":0,"approvedVersionId":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the KYC versions of one user. Each entry carries the review timestamps and the derived state flags. A user lists their own versions; listing another user's versions requires the claim issuer or identity manager role.","summary":"List KYC versions","x-dalp-auth":"session-or-api-key"},"post":{"tags":["KYC"],"operationId":"v1UserKycVersions.create","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user this KYC request addresses. A user passes their own identifier; addressing another user requires the claim issuer or identity manager role."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"The draft version this call created, including the identity fields copied into it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycProfileVersionsCreateOutput"},"examples":{"example-1":{"value":{"id":"0194a7d9-0e44-7a19-b6c3-72f81d4a0e55","versionNumber":2,"status":"draft","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","firstName":"Amara","lastName":"Okafor","dob":"1988-04-12T00:00:00.000Z","country":"NL","residencyStatus":"resident","nationalId":"NL-8842-1177","createdAt":"2026-06-08T09:40:00.000Z","createdBy":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Creates a draft version for one user. A user holds one draft at a time, so set `overwriteDraft` to `true` to replace an existing draft. A user creates a draft on their own profile; creating one for another user requires the claim issuer or identity manager role.","summary":"Create a KYC draft version","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cloneFrom":{"anyOf":[{"type":"string","enum":["approved","latest"]},{"type":"null"}]},"cloneFromVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"overwriteDraft":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"initialData":{"anyOf":[{"type":"object","properties":{"firstName":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"lastName":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"dob":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},{"type":"null"}]},"country":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCodeNormalizedEncoded"},{"type":"null"}]},{"type":"null"}]},"residencyStatus":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}]},{"type":"null"}]},"nationalId":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]}},"additionalProperties":false,"description":"How to seed the new draft. Send `initialData` to start from supplied fields, `cloneFromVersionId` to copy a specific version, or `cloneFrom` to copy the approved or latest version. Set `overwriteDraft` to `true` to replace an existing draft."}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/user/kyc/list":{"get":{"tags":["KYC"],"operationId":"v1UserKyc.list","parameters":[{"name":"limit","in":"query","schema":{"type":"integer"},"required":false},{"name":"offset","in":"query","schema":{"type":"integer"},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["createdAt","updatedAt","lastName","firstName"]},"required":false},{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"description":"Case-insensitive match against first name, last name, or national identifier."},"required":false}],"responses":{"200":{"description":"One page of flattened KYC profiles visible in the active organization, with the total match count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycListOutput"},"examples":{"example-1":{"value":{"items":[{"id":"0193fa5d-4b17-7c88-8e51-9a2f0d6c3b71","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","firstName":"Amara","lastName":"Okafor","dob":"1988-04-12T00:00:00.000Z","country":"NL","residencyStatus":"resident","nationalId":"NL-8842-1177","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z"}],"total":1,"limit":20,"offset":0}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns KYC profiles visible in the active organization. The caller needs a role that may list organization members. Prefer the versioned profile routes for new work.","summary":"List KYC profiles","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/{userId}/kyc/read":{"get":{"tags":["KYC"],"operationId":"v1UserKyc.read","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user this KYC request addresses. A user passes their own identifier; addressing another user requires the claim issuer or identity manager role."},"required":true}],"responses":{"200":{"description":"The flattened KYC fields stored for the named user, plus the approved content hash when one exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycReadOutput"},"examples":{"example-1":{"value":{"id":"0193fa5d-4b17-7c88-8e51-9a2f0d6c3b71","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","firstName":"Amara","lastName":"Okafor","dob":"1988-04-12T00:00:00.000Z","country":"NL","residencyStatus":"resident","nationalId":"NL-8842-1177","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z","contentHash":"ad8bfb5243fffeb4db2aa581ae965be67c08059dd899e23a76afdb05d71bd8e0"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the flattened KYC fields stored for one user. A missing record returns 404. Prefer the profile and version routes for new work.","summary":"Read a legacy KYC record","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/{userId}/kyc/upsert":{"post":{"tags":["KYC"],"operationId":"v1UserKyc.upsert","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user this KYC request addresses. A user passes their own identifier; addressing another user requires the claim issuer or identity manager role."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"Whether the write changed stored fields, plus the resulting profile and current version.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycUpsertOutput"},"examples":{"example-1":{"value":{"changed":true,"currentVersion":{"id":"0194a7d1-2f88-7c05-9b3a-51d0e7c4a962","number":2,"contentHash":"ad8bfb5243fffeb4db2aa581ae965be67c08059dd899e23a76afdb05d71bd8e0","createdAt":"2026-06-02T08:15:00.000Z"},"profile":{"id":"0193fa5d-4b17-7c88-8e51-9a2f0d6c3b71","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","firstName":"Amara","lastName":"Okafor","dob":"1988-04-12T00:00:00.000Z","country":"NL","residencyStatus":"resident","nationalId":"NL-8842-1177","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-06-02T08:15:00.000Z"}}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Writes the flattened identity fields for one user. Prefer creating a draft version on the versioned surface. A user the caller cannot update returns 404.","summary":"Create or replace a legacy KYC record","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}],"description":"Given name to store. Omit the field to leave the stored value unchanged."},"lastName":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}],"description":"Family name to store. Omit the field to leave the stored value unchanged."},"dob":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},{"type":"null"}]},"country":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCodeNormalizedEncoded"},{"type":"null"}]},{"type":"null"}],"description":"ISO 3166-1 alpha-2 country to store. Omit the field to leave the stored value unchanged."},"residencyStatus":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}]},{"type":"null"}],"description":"Residency classification to store. Omit the field to leave the stored value unchanged."},"nationalId":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}],"description":"National identifier to store. Omit the field to leave the stored value unchanged."}},"additionalProperties":false,"description":"Flattened identity fields to store. Omit a field to leave its stored value unchanged. Prefer creating a draft version on the versioned surface for new work."}}},"required":false},"x-dalp-auth":"session-or-api-key"}},"/api/v1/user/{userId}/kyc/remove":{"delete":{"tags":["KYC"],"operationId":"v1UserKyc.remove","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user this KYC request addresses. A user passes their own identifier; addressing another user requires the claim issuer or identity manager role."},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Optional key that labels one attempt of this change so a client can match a retry with its first call. The platform generates a value when the header is absent. Sending the same key again performs the change again rather than replaying the first result."},"required":false}],"responses":{"200":{"description":"Confirmation that the flattened KYC record for the named user is gone.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycDeleteOutput"},"examples":{"example-1":{"value":{"userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12255","DALP-12283","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"KYC record not found","data":{"id":"DALP-12255","why":"No KYC record visible to the current caller matches this request.","fix":"Confirm the record belongs to the active organization and use an identifier returned for that organization.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-12293","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12286"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"The compliance module settings contradict each other","data":{"id":"DALP-12286","why":"Two or more settings in the submitted compliance module configuration cannot hold at the same time.","fix":"Submit one consistent module configuration.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12248","DALP-12249","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Deletes the flattened KYC fields stored for one user. It does not delete versioned profile history. A missing record returns 404.","summary":"Remove a legacy KYC record","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/me":{"get":{"tags":["Users"],"operationId":"v1User.me","parameters":[],"responses":{"200":{"description":"The authenticated user as the Console session sees them. `verificationTypes` lists the wallet verification methods already set up, and `onboardingState` reports which Console setup steps are finished. Read `/users/me/custody-accounts` for ledger accounts. `remainingRecoveryCodes` is omitted when the user has not confirmed a recovery-code set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMe"},"examples":{"example-1":{"value":{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"member","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z","verificationTypes":["PINCODE"],"onboardingState":{"wallet":true,"walletSecurity":true,"walletRecoveryCodes":true,"system":true,"systemSettings":true,"systemAssets":true,"systemAddons":true,"identitySetup":true},"remainingRecoveryCodes":8,"hasRelevantAddons":true,"personalInfoCompleted":true,"isUserSecure":true,"systemAddress":"0x9F4C1a2B3D5e6f708192a3B4c5D6e7f8091A2B3c","baseCurrency":"EUR","onboardingCompletedAt":"2026-03-11T16:02:08.000Z","organizationName":"Northwind Coffee"}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the signed-in user together with onboarding state and wallet verification methods. Read the custody-account collection for ledger accounts. A session with no matching user record returns 404.","summary":"Read the authenticated user","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/search":{"get":{"tags":["Users"],"operationId":"v1User.search","parameters":[{"name":"query","in":"query","schema":{"type":"string","minLength":1,"description":"Search term to match against user fields"},"required":true},{"name":"limit","in":"query","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"A short list of users whose profile or linked account matches the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSearchOutput_1"},"examples":{"example-1":{"value":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","participantId":"participant-amara-okafor","name":"Amara Okafor","role":"member"}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438","DALP-9439"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a short list of users in the active organization whose name, first name, last name, or linked account matches `query`. Results are limited to 10 by default and 50 at most. The response omits identity, claims, and account details. Use the list route when you need a full page of members.","summary":"Search users","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/list":{"get":{"tags":["Users"],"operationId":"v1User.list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string"},"required":false},{"name":"offset","in":"query","schema":{"type":"integer"},"required":false},{"name":"limit","in":"query","schema":{"type":"integer"},"required":false},{"name":"filters","in":"query","schema":{"type":"object","properties":{"search":{"type":"string","description":"Search query","examples":["john","0x71C7","admin"]}},"additionalProperties":false},"required":false,"style":"deepObject","explode":true}],"responses":{"200":{"description":"A page of organization members. `total` counts every member matching the query rather than the ones on this page. `limit` repeats the page size the request asked for, and `offset` is the number of matching members skipped before this page.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserListItem"}},"total":{"type":"number"},"limit":{"anyOf":[{"type":"number"},{"type":"null"}]},"offset":{"type":"number"}},"required":["items","total","offset"],"additionalProperties":false,"description":"A page of organization members. `total` counts every member matching the query rather than the ones on this page. `limit` repeats the page size the request asked for, and `offset` is the number of matching members skipped before this page.","examples":[{"items":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"member","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z","participantId":"c0b8d4b0-3c5a-4b62-9a2e-2f0f6f4a5f10","roles":{"identityManager":true},"rolesPending":false,"isAdmin":false}],"total":1,"limit":25,"offset":0}]},"examples":{"example-1":{"value":{"items":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"member","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z","participantId":"c0b8d4b0-3c5a-4b62-9a2e-2f0f6f4a5f10","roles":{"identityManager":true},"rolesPending":false,"isAdmin":false}],"total":1,"limit":25,"offset":0}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438","DALP-9439"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one page of users that belong to the active organization. `limit` defaults to 25 and accepts at most 200, `offset` starts at 0, and `orderBy` falls back to `createdAt` ascending. The caller needs a role that may list organization members.","summary":"List users","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/list/admins":{"get":{"tags":["Users"],"operationId":"v1User.adminList","parameters":[],"responses":{"200":{"description":"Every user whose scoped executor holds a system admin role in the active organization. The list is not paginated.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"name":{"type":"string","description":"Display name shown in the Console. Falls back to the email local part when the user has not set one.","examples":["Amara Okafor"]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"$ref":"#/components/schemas/UserRoleEncoded"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"nationalId":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"country":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"dob":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"residencyStatus":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus_1"},{"type":"null"}]},{"type":"null"}]},"createdAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"lastLoginAt":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},{"type":"null"}]}},"required":["id","name"],"additionalProperties":false,"description":"A user visible in the active organization. Custody-account routes expose the user's ledger accounts. `createdAt` and `lastLoginAt` are RFC 3339 timestamps in UTC.","examples":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"member","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z"}]},"description":"Every user whose scoped executor holds a system admin role in the active organization. The list is not paginated.","examples":[[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"admin","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z"}]]},"examples":{"example-1":{"value":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"admin","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z"}]}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438","DALP-9439"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns every user whose scoped executor holds a system admin role in the active organization. The list is not paginated. The caller needs a role that may list organization members.","summary":"List organization administrators","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/by-id/{userId}":{"get":{"tags":["Users"],"operationId":"v1User.readByUserId","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"required":true}],"responses":{"200":{"description":"One organization member. `roles` reports the on-chain access-control roles held by the member's scoped executor on the active system. `rolesPending` is true while a role change is still waiting on the indexer. `isAdmin` is true when the user holds a system admin role. Read the participant custody-account route for ledger accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserReadOutput"},"examples":{"example-1":{"value":{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"member","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z","participantId":"c0b8d4b0-3c5a-4b62-9a2e-2f0f6f4a5f10","roles":{"identityManager":true},"rolesPending":false,"isAdmin":false}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438","DALP-9439"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one user in the active organization by the UUID the platform assigned. An identifier that belongs to another organization returns 404 rather than 403.","summary":"Read a user by identifier","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/stats":{"get":{"tags":["Users"],"operationId":"v1User.stats","parameters":[{"name":"timeRange","in":"query","schema":{"type":"number"},"required":false}],"responses":{"200":{"description":"Organization user counts. `totalUsers` is every member, `recentUsers` is the number created inside `timeRangeDays`, and `userGrowth` is one point per day in that range. Timestamps are RFC 3339 instants in UTC.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserStatsOutput"},"examples":{"example-1":{"value":{"totalUsers":42,"recentUsers":3,"userGrowth":[{"timestamp":"2026-03-05T00:00:00.000Z","users":40},{"timestamp":"2026-03-11T00:00:00.000Z","users":42}],"timeRangeDays":7}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns the number of users in the active organization, how many were created inside `timeRange` days, and one growth point per day in that range. `timeRange` defaults to 7 and accepts at most 365.","summary":"Read user metrics","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/stats/user-count":{"get":{"tags":["Users"],"operationId":"v1User.statsUserCount","parameters":[{"name":"timeRange","in":"query","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"How many users belong to the active organization, and how many of them were created inside `timeRangeDays`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserStatsUserCountOutput"},"examples":{"example-1":{"value":{"totalUsers":42,"recentUsers":3,"timeRangeDays":7}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns how many users belong to the active organization and how many of them were created inside `timeRange` days. `timeRange` defaults to 7 and accepts at most 365.","summary":"Read user counts","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/stats/growth-over-time":{"get":{"tags":["Users"],"operationId":"v1User.statsGrowthOverTime","parameters":[{"name":"timeRange","in":"query","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"One point per day of organization membership for the requested range. `timestamp` is midnight UTC of that day, and `users` is the membership count at the end of that day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserStatsGrowthOverTimeOutput"},"examples":{"example-1":{"value":{"userGrowth":[{"timestamp":"2026-02-10T00:00:00.000Z","users":31},{"timestamp":"2026-03-11T00:00:00.000Z","users":42}],"timeRangeDays":30}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one point per day of organization membership for `timeRange` days. `timeRange` defaults to 30 and accepts at most 365.","summary":"Read user growth over time","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/events":{"get":{"tags":["Users"],"operationId":"v1User.events","parameters":[{"name":"limit","in":"query","schema":{"type":"number"},"required":false},{"name":"offset","in":"query","schema":{"type":"number"},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["blockTimestamp","eventName","blockNumber"]},"required":false},{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"eventNames","in":"query","schema":{"type":"array","items":{"type":"string"},"description":"Filter events by event name (e.g., TransferCompleted, MintCompleted)","examples":[["TransferCompleted","MintCompleted"]]},"required":false},{"name":"senderAddress","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false},{"name":"transactionHashes","in":"query","schema":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Filter events by one or more transaction hashes"},"required":false}],"responses":{"200":{"description":"A page of on-chain events for the authenticated user. `total` counts every matching event rather than the ones on this page.","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/UserEvent"}},"total":{"type":"number"}},"required":["events","total"],"additionalProperties":false,"description":"A page of on-chain events for the authenticated user. `total` counts every matching event rather than the ones on this page.","examples":[{"events":[{"id":"evt-northwind-transfer-1","eventName":"Transfer","txIndex":"0","blockNumber":"18429103","blockTimestamp":"2026-03-11T16:02:08.000Z","transactionHash":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4","emitter":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"sender":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"metaTxSigner":null,"displaySender":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"relayerKind":null,"relayer":null,"userOpHash":null,"involved":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}],"values":[{"id":"val-0","name":"from","value":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},{"id":"val-1","name":"to","value":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}]}],"total":1}]},"examples":{"example-1":{"value":{"events":[{"id":"evt-northwind-transfer-1","eventName":"Transfer","txIndex":"0","blockNumber":"18429103","blockTimestamp":"2026-03-11T16:02:08.000Z","transactionHash":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4","emitter":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"sender":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"metaTxSigner":null,"displaySender":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"relayerKind":null,"relayer":null,"userOpHash":null,"involved":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}],"values":[{"id":"val-0","name":"from","value":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},{"id":"val-1","name":"to","value":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}]}],"total":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns a page of indexed on-chain events involving any account of the authenticated user. Filter on event name, sender, or transaction hash. This operation reads from the Ledger Index and submits no transaction.","summary":"List the caller's on-chain events","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/create":{"post":{"tags":["Users"],"operationId":"v1User.create","parameters":[{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Key that labels this request attempt. Supply a value you choose so you can correlate the call across your logs. The platform generates one when you omit the header. Sending the same key again performs the change again rather than replaying the first result.","examples":["7c4a1f2e-1b58-4f3d-9a6c-2d0f8b41c7e5"]},"required":false}],"responses":{"200":{"description":"The created user, the managed custody account the platform provisioned, and the identity contract it deployed. Read the custody account for its ledger address. Identity registration is a separate step.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserOutput"},"examples":{"example-1":{"value":{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","participantId":"0198f2f0-6d0b-7f86-8f24-c5e1ef9f9d12","activationStatus":"active","custodyAccountId":"0198f2f0-6d0b-7f86-8f24-c5e1ef9f9d11","identity":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Creates a user in the active organization, provisions a managed custody account with the selected provider configuration, and deploys an identity contract. Identity registration is a separate step. `email` must be unique in the organization. An email another member already holds returns 409.","summary":"Create a user","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"email":{"type":"string"},"providerConfigurationId":{"$ref":"#/components/schemas/CustodyProviderConfigurationId"},"walletVerification":{"anyOf":[{"$ref":"#/components/schemas/UserVerification_7"},{"type":"null"}]}},"required":["email"],"additionalProperties":false,"description":"User to create in the active organization. `email` must be unique in that organization. Omit `name` to let the platform derive a display name from the email. Send `walletVerification` when the calling wallet is protected by a code.","examples":[{"name":"Amara Okafor","email":"amara.okafor@northwind.example","providerConfigurationId":"0198f2f0-6d0b-7f86-8f24-c5e1ef9f9d10"}]}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/user/admin/{userId}/security":{"get":{"tags":["Users"],"operationId":"v1User.adminGetSecurity","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user this admin operation targets, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"required":true}],"responses":{"200":{"description":"Security settings and live sessions for one user. Session tokens are omitted. `createdAt`, `updatedAt`, and `expiresAt` are RFC 3339 timestamps in UTC.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSecurityOutput"},"examples":{"example-1":{"value":{"twoFactorEnabled":true,"walletPincodeEnabled":true,"walletTwoFactorEnabled":false,"walletSecretCodesConfirmed":true,"sessions":[{"id":"0194a7d7-58e3-7f10-9c26-4b7d0e91a3f8","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","ipAddress":"203.0.113.42","userAgent":"Mozilla/5.0","createdAt":"2026-03-11T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z","expiresAt":"2026-03-18T09:12:41.000Z"}]}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-12260","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns whether the user has enabled two-factor authentication and wallet verification methods, together with the live sessions the platform currently holds. Session tokens are omitted.","summary":"Read a user's security settings","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/admin/session/revoke":{"post":{"tags":["Users"],"operationId":"v1User.adminRevokeSession","parameters":[{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Key that labels this request attempt. Supply a value you choose so you can correlate the call across your logs. The platform generates one when you omit the header. Sending the same key again performs the change again rather than replaying the first result.","examples":["7c4a1f2e-1b58-4f3d-9a6c-2d0f8b41c7e5"]},"required":false}],"responses":{"200":{"description":"Confirms that the admin change was stored. `success` is always true on a 200 response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMutationOutput"},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"The organization has no deployed system on chain {chainId}","data":{"id":"DALP-9524","why":"The active organization has no deployed system on its default network.","fix":"Deploy the organization system before using system-scoped APIs.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Ends one live session. The user must sign in again on that device. A session identifier the caller cannot see returns 404.","summary":"Revoke one session","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeSessionInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/user/admin/{userId}/sessions/revoke-all":{"post":{"tags":["Users"],"operationId":"v1User.adminRevokeAllSessions","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Key that labels this request attempt. Supply a value you choose so you can correlate the call across your logs. The platform generates one when you omit the header. Sending the same key again performs the change again rather than replaying the first result.","examples":["7c4a1f2e-1b58-4f3d-9a6c-2d0f8b41c7e5"]},"required":false}],"responses":{"200":{"description":"Confirms that the admin change was stored. `success` is always true on a 200 response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMutationOutput"},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-12260","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Ends every live session for the named user. The user must sign in again on every device.","summary":"Revoke every session for a user","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/admin/{userId}/mfa/reset":{"post":{"tags":["Users"],"operationId":"v1User.adminResetMfa","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Key that labels this request attempt. Supply a value you choose so you can correlate the call across your logs. The platform generates one when you omit the header. Sending the same key again performs the change again rather than replaying the first result.","examples":["7c4a1f2e-1b58-4f3d-9a6c-2d0f8b41c7e5"]},"required":false}],"responses":{"200":{"description":"Confirms that the admin change was stored. `success` is always true on a 200 response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMutationOutput"},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-12260","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Clears the user's multi-factor authentication enrollment so the user can set it up again. It does not change the user's password or wallet verification methods.","summary":"Reset a user's multi-factor authentication","x-dalp-auth":"session-or-api-key"}},"/api/v1/user/admin/{userId}/password/reset":{"post":{"tags":["Users"],"operationId":"v1User.adminTriggerPasswordReset","parameters":[{"name":"userId","in":"path","schema":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"required":true},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","description":"Key that labels this request attempt. Supply a value you choose so you can correlate the call across your logs. The platform generates one when you omit the header. Sending the same key again performs the change again rather than replaying the first result.","examples":["7c4a1f2e-1b58-4f3d-9a6c-2d0f8b41c7e5"]},"required":false}],"responses":{"200":{"description":"Confirms that the admin change was stored. `success` is always true on a 200 response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMutationOutput"},"examples":{"example-1":{"value":{"success":true}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-12260","DALP-9440","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12103","DALP-12307"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Sends a password-reset message to the named user. The platform stores no new password here. Repeating the call sends another message.","summary":"Send a password reset","x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp":{"post":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/create","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The create transaction hash and the deployed settlement address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpCreateOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae","settlementId":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-0615","DALP-12033","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0431","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Creates an exchange-versus-payment settlement on the frozen v1 surface and waits for the settlement address. At least one flow must be local. A cross-chain settlement also needs a `secret` or `hashlock`. The same payload submitted twice after a success deploys a second settlement, so inspect the returned address before you retry.","summary":"Create an XvP settlement and wait","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalMessageAuthorization":{"$ref":"#/components/schemas/ExternalMessageAuthorization_2"},"walletVerification":{"$ref":"#/components/schemas/UserVerification_8"},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"[^\\p{White_Space}\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}]"},"autoExecute":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cutoffDate":{"$ref":"#/components/schemas/TimestampEncoded"},"secret":{"type":"string","minLength":32,"maxLength":1024,"description":"Raw HTLC secret pre-image (plain text string)."},"hashlock":{"type":"string"},"flows":{"type":"array","items":{"$ref":"#/components/schemas/XvpSettlementFlow"},"minItems":1,"maxItems":100},"country":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"}},"required":["factoryAddress","name","flows"],"additionalProperties":false,"description":"Settlement to create. At least one flow must be local. A cross-chain settlement also needs a `secret` or `hashlock`. `name` must contain a visible character.","examples":[{"factoryAddress":"0x0165878A594ca255338adfa4d48449f69242Eb8F","name":"Northwind Series A vs Fabrikam USDC","autoExecute":false,"flows":[{"type":"local","assetId":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","from":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","to":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","amount":"125000000000000000000000"},{"type":"local","assetId":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","from":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","to":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","amount":"125000000000"}]}]}}},"required":true},"x-dalp-auth":"session-or-api-key"},"get":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/list","parameters":[{"name":"orderDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"required":false},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["createdAt","cutoffDate","name"]},"required":false},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":200},"required":false},{"name":"participant","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false},{"name":"systemAddon","in":"query","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":false}],"responses":{"200":{"description":"XvP settlements visible to the selected participant. `total` is the full match count, not a page size.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementListResponse"},"examples":{"example-1":{"value":{"xvPSettlements":[{"id":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","name":"Northwind Series A vs Fabrikam USDC","hasExternalFlows":false,"cutoffDate":"2026-04-20T16:00:00.000Z","createdAt":"2026-03-15T09:12:41.000Z","createdBy":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","isContract":false},"executed":false,"cancelled":false,"withdrawn":false,"allApprovedAt":null,"approvalsCount":1,"cancelVotesCount":0,"localSendersCount":2,"localParticipantsCount":2,"userApproved":true}],"total":1}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns XvP settlements visible to the selected participant on the frozen v1 surface. Filter by participant or factory and order by `createdAt`, `cutoffDate`, or `name`. There is no pagination envelope on this frozen surface. Repeating the request is safe.","summary":"List every XvP settlement","x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/{settlementAddress}":{"get":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/read","parameters":[{"name":"settlementAddress","in":"path","schema":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"required":true}],"responses":{"200":{"description":"One XvP settlement with approvals, cancel votes, asset flows, and whether a secret is stored. `userApproved` is relative to the authenticated caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementRead"},"examples":{"example-1":{"value":{"id":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","name":"Northwind Series A vs Fabrikam USDC","hasExternalFlows":false,"cutoffDate":"2026-04-20T16:00:00.000Z","createdAt":"2026-03-15T09:12:41.000Z","createdBy":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","isContract":false},"executed":false,"cancelled":false,"withdrawn":false,"allApprovedAt":null,"approvalsCount":1,"cancelVotesCount":0,"localSendersCount":2,"localParticipantsCount":2,"secretRevealed":false,"secretRevealedAt":null,"secretRevealTx":null,"secretRevealedBy":null,"autoExecute":false,"approvals":[{"id":"approval:treasury","approved":true,"timestamp":"2026-03-15T10:00:00.000Z","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}}],"cancelVotes":[],"flows":[{"id":"flow:ncb","isExternal":false,"externalChainId":0,"amount":"125000","amountExact":"125000000000000000000000","from":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"to":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"asset":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","decimals":18,"symbol":"NCB"},"assetReference":null},{"id":"flow:usdc","isExternal":false,"externalChainId":0,"amount":"125000","amountExact":"125000000000","from":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"to":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"asset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","decimals":6,"symbol":"USDC"},"assetReference":null}],"systemAddon":{"id":"0x0165878A594ca255338adfa4d48449f69242Eb8F"},"hasStoredSecret":false,"userApproved":true}}}}}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"Active organization required for this operation","data":{"id":"DALP-0034","why":"The request requires organization-scoped permissions, but the session does not have an active organization selected.","fix":"Select an organization, refresh the session, and retry the request.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns one XvP settlement with approvals, cancel votes, and asset flows on the frozen v1 surface. A settlement the indexer has not seen answers 404. Repeating the request is safe.","summary":"Read an XvP settlement","x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/decrypt":{"post":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/decrypt","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The decrypted hashlock pre-image and its keccak256 hashlock. Use `secret` only to reveal or execute a hashlocked settlement. A later decrypt of the same stored secret returns these same values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpDecryptOutput"},"examples":{"example-1":{"value":{"secret":"0x6e6f72746877696e642d7365726965732d612d707265696d616765","hashlock":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The selected custody account cannot sign for this request","data":{"id":"DALP-12019","why":"Signing this request needs a custody account that is active, eligible on the network the request resolved to, and bound to a live provider signer. The account in `data.custodyAccountId` misses at least one of those: it is still provisioning, its account or organization context left the active state, its provider reports an unhealthy signer, or its managed key binding is gone. When `data.custodyAccountId` is absent, the request named no account and the signed-in participant holds no eligible primary account on this network. When `data.reason` is present, this organization cannot drive the account's wallet and the value names the capability it lacks, the same reason the custody-account list reports for that account.","fix":"Read the custody-account list for the network this request targets, pick an account it reports as active and eligible, and send that identifier. Ask an administrator to provision or repair an account on that network when the list offers none.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Decrypts the stored hashlock secret after the authorized wallet signs the request. A missing stored secret answers 404. Repeating the request after a success returns the same secret.","summary":"Decrypt an XvP secret","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementMutationInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/reveal-secret":{"post":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/revealSecret","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"The reveal transaction hash and optional email delivery results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpRevealSecretOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae","emailResults":[{"recipient":"ops@northwind.example","success":true}]}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-0615","DALP-12033","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0431","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Publishes the hashlock pre-image on chain so counterparties can execute a cross-chain settlement. A settlement that does not require a reveal answers 409. Inspect the returned hash before you retry.","summary":"Reveal an XvP secret and wait","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpRevealSecretInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/approve":{"put":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/approve","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpApproveOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-0615","DALP-12033","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0431","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Records the caller's approval on a settlement they send into. Only a local sender may approve. Inspect the returned hash before you retry; a second approve after success is rejected.","summary":"Approve an XvP settlement and wait","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementMutationInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/revoke-approval":{"put":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/revokeApproval","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpRevokeApprovalOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-0615","DALP-12033","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0431","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Removes a prior approval from a settlement that has not yet executed. Inspect the returned hash before you retry.","summary":"Revoke an XvP approval and wait","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementMutationInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/cancel":{"put":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/cancel","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpCancelOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-0615","DALP-12033","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0431","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Casts a cancellation vote on a settlement that has not executed. Cancellation completes only after the required votes land. Inspect the returned hash before you retry.","summary":"Propose XvP cancellation and wait","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementMutationInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/withdraw-cancel":{"put":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/withdrawCancel","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpWithdrawCancelOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-0615","DALP-12033","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0431","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Withdraws the caller's pending cancellation vote so the settlement can continue. Inspect the returned hash before you retry.","summary":"Withdraw an XvP cancellation vote and wait","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementMutationInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/withdraw-expired":{"put":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/withdrawExpired","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpWithdrawExpiredOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-0615","DALP-12033","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0431","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Returns escrowed assets after the settlement cutoff has passed without execution. Inspect the returned hash before you retry.","summary":"Withdraw an expired XvP settlement and wait","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementMutationInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/v1/xvp/execute":{"put":{"tags":["XvP settlements"],"operationId":"v1/addons/xvp/execute","parameters":[{"$ref":"#/components/parameters/idempotencyKey"}],"responses":{"200":{"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpExecuteOutput"},"examples":{"example-1":{"value":{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}}}}},"headers":{}},"400":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError400"},{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0001","DALP-0061","DALP-0615","DALP-12033","DALP-12136","DALP-12308","DALP-9084","DALP-9085","DALP-9430"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"BAD_REQUEST","status":400,"message":"The request could not be read","data":{"id":"DALP-0001","why":"The request body, query, or headers did not match the published schema for this route.","fix":"Check the field names, types, and content type against the route schema, then send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError401"},{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0002","DALP-9188"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"UNAUTHORIZED","status":401,"message":"Authentication missing or failed","data":{"id":"DALP-0002","why":"The request did not include valid authentication credentials.","fix":"Authenticate again or send a valid API key/session credential.","retryable":false,"category":"auth"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError403"},{"type":"object","properties":{"code":{"type":"string","enum":["FORBIDDEN"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0003","DALP-0034","DALP-0036","DALP-0524","DALP-0616","DALP-0621","DALP-9438"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"FORBIDDEN","status":403,"message":"This operation is not available to the caller","data":{"id":"DALP-0003","why":"The route runs behind an access gate that the caller does not satisfy. When `data.requiredRoles` is present, it lists the roles that pass the gate and the wallet that authorized this request holds none of them. When it is absent, the gate is an off-chain permission or an ownership scope the caller sits outside.","fix":"Retry with an actor that already holds one of the roles in `data.requiredRoles`, or ask an administrator to grant one of them. When the record is the caller's own, confirm the request names that record on the network where the caller's account lives.","retryable":false,"category":"permission"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"404":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError404"},{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0022","DALP-9524"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"NOT_FOUND","status":404,"message":"Resource not found","data":{"id":"DALP-0022","why":"The requested resource could not be found.","fix":"Check the identifier and retry only if the resource should exist.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError409"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFLICT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0024","DALP-12019","DALP-12195","DALP-12196","DALP-9086","DALP-9433"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFLICT","status":409,"message":"The change conflicts with the current resource state","data":{"id":"DALP-0024","why":"Another write already changed this resource, or the resource is already in the requested state.","fix":"Read the current resource, resolve the difference, and send the request again.","retryable":false,"category":"client"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError422"},{"type":"object","properties":{"code":{"type":"string","enum":["INPUT_VALIDATION_FAILED"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-12324","DALP-12325"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INPUT_VALIDATION_FAILED","status":422,"message":"A settlement precondition is not met","data":{"id":"DALP-12324","why":"The settlement cannot run the requested operation until a precondition it names is satisfied.","fix":"Satisfy the precondition, then send the request again.","retryable":false,"category":"domain"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError500"},{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL_SERVER_ERROR"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-0009","DALP-0083","DALP-0084","DALP-0431","DALP-12307","DALP-12326"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"INTERNAL_SERVER_ERROR","status":500,"message":"Session resolution failed","data":{"id":"DALP-0009","why":"Platform API could not resolve the authenticated session from the request headers.","fix":"Retry with a fresh session or API key. If the problem continues, contact support with the request id.","retryable":true,"category":"dependency"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"504":{"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DalpPublicHttpError504"},{"type":"object","properties":{"code":{"type":"string","enum":["CONFIRMATION_TIMEOUT"]},"data":{"type":"object","properties":{"id":{"type":"string","enum":["DALP-9532"]}},"required":["id"]}},"required":["code","data"]}],"examples":[{"code":"CONFIRMATION_TIMEOUT","status":504,"message":"The request deadline expired","data":{"id":"DALP-9532","why":"The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.","fix":"Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.","retryable":false,"category":"operational"}}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}},"description":"Settles an approved settlement and moves the escrowed flows. A hashlocked settlement also needs its secret revealed first. Inspect the returned hash before you retry.","summary":"Execute an XvP settlement and wait","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XvpSettlementMutationInput"}}},"required":true},"x-dalp-auth":"session-or-api-key"}},"/api/auth/sign-in/social":{"post":{"tags":["Sessions and sign-in"],"description":"Starts social sign-in for the named provider. If you include an id token, the response is a session. Otherwise follow the returned authorize URL, then complete the provider callback.","operationId":"socialSignIn","security":[],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"callbackURL":{"type":"string","description":"Callback URL to redirect to after the user has signed in"},"newUserCallbackURL":{"type":"string"},"errorCallbackURL":{"type":"string","description":"Callback URL to redirect to if an error happens"},"provider":{"anyOf":[{"type":"string","enum":["apple","atlassian","cloudflare","cognito","discord","facebook","figma","github","microsoft","google","huggingface","slack","spotify","twitch","twitter","dropbox","kick","linear","linkedin","gitlab","tiktok","reddit","roblox","salesforce","vk","zoom","notion","kakao","naver","line","paybin","paypal","polar","railway","vercel","wechat"]},{"type":"string"}]},"disableRedirect":{"type":"boolean","description":"Disable automatic redirection to the provider. Useful for handling the redirection yourself"},"idToken":{"type":"object","properties":{"token":{"type":"string","description":"ID token from the provider"},"nonce":{"type":"string","description":"Nonce used to generate the token"},"accessToken":{"type":"string","description":"Access token from the provider"},"refreshToken":{"type":"string","description":"Refresh token from the provider"},"expiresAt":{"type":"number","description":"Expiry date of the token"},"user":{"type":"object","properties":{"name":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}},"email":{"type":"string"}},"description":"The user object from the provider. Only available for some providers like Apple."}},"required":["token"]},"scopes":{"type":"array","items":{"type":"string"},"description":"Array of scopes to request from the provider. This will override the default scopes passed."},"requestSignUp":{"type":"boolean","description":"Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider"},"loginHint":{"type":"string","description":"The login hint to use for the authorization code request"},"additionalParams":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Extra query parameters to append to the provider authorization URL (e.g. Cognito identity_provider, Google hd)."},"additionalData":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["provider"]}}}},"responses":{"200":{"description":"Starts social sign-in for the named provider.","content":{"application/json":{"schema":{"type":"object","description":"Returns session details when idToken is provided, or an authorize URL otherwise","properties":{"token":{"type":"string"},"user":{"type":"object","$ref":"#/components/schemas/User"},"url":{"type":"string"},"redirect":{"type":"boolean"}},"required":["redirect"]},"example":{"token":"sess_example_not_a_live_token","user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"},"redirect":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Sign in with a social provider","x-dalp-auth":"none"}},"/api/auth/callback/{id}":{"get":{"tags":["Sessions and sign-in"],"security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Complete social sign-in with GET","description":"Finishes the social provider redirect. The path id is the provider. The provider sends the authorization result in the query. After success, the browser holds a session.","operationId":"auth_get_callback_id","x-dalp-auth":"none"},"post":{"tags":["Sessions and sign-in"],"security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"error":{"type":"string"},"device_id":{"type":"string"},"error_description":{"type":"string"},"state":{"type":"string"},"user":{"type":"string"},"iss":{"type":"string"}}}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Complete social sign-in with POST","description":"Finishes the social provider callback when the provider posts the authorization result. The path id is the provider. After success, a session is established.","operationId":"auth_post_callback_id","x-dalp-auth":"none"}},"/api/auth/get-session":{"get":{"tags":["Sessions and sign-in"],"description":"Returns the signed-in session and user when the request carries a valid session cookie or API key. Use the result to learn who is signed in and which organization is active. If there is no session, treat the caller as signed out and send them to sign in.","operationId":"getSession","security":[{"sessionCookie":[]},{"apiKey":[]}],"parameters":[],"responses":{"200":{"description":"Returns the signed-in session and user when the request carries a valid session cookie or API key.","content":{"application/json":{"schema":{"type":["object","null"],"properties":{"session":{"$ref":"#/components/schemas/Session"},"user":{"$ref":"#/components/schemas/User"}},"required":["session","user"]},"example":{"session":{"id":"sess_northwind_console","expiresAt":"2026-03-11T15:42:18.000Z","token":"sess_example_not_a_live_token","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","ipAddress":"203.0.113.10","userAgent":"Mozilla/5.0 NorthwindConsole","userId":"user_northwind_ops","activeOrganizationId":"org_northwind_coffee"},"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Read the current session","x-dalp-auth":"optional"}},"/api/auth/sign-out":{"post":{"tags":["Sessions and sign-in"],"description":"Ends the current session and clears the session cookie. After success, discard any stored session token and send the caller to sign in.","operationId":"signOut","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"callbackURL":{"type":"string","description":"The URL to redirect to after provider logout"},"disableRedirect":{"type":"boolean","description":"Return the provider logout URL without redirecting"},"state":{"type":"string","description":"State to pass to the provider logout endpoint"}}}}}},"responses":{"200":{"description":"Ends the current session and clears the session cookie.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"url":{"type":"string","description":"Provider logout URL when RP-initiated logout is available"},"redirect":{"type":"boolean","description":"Whether the client should redirect to the provider logout URL"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Sign out the current user","x-dalp-auth":"optional"}},"/api/auth/sign-up/email":{"post":{"tags":["Sessions and sign-in"],"description":"Creates an account from name, email, and password. Email and password sign-up may be disabled when the deployment uses only an identity provider. On success, store the session, or send the user to verify email when a verification message is required.","operationId":"signUpWithEmailAndPassword","security":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user"},"email":{"type":"string","description":"The email of the user"},"password":{"type":"string","description":"The password of the user"},"image":{"type":"string","description":"The profile image URL of the user"},"callbackURL":{"type":"string","description":"The URL to use for email verification callback"},"rememberMe":{"type":"boolean","description":"If this is false, the session will not be remembered. Default is `true`."}},"required":["name","email","password"]}}}},"responses":{"200":{"description":"Creates an account from name, email, and password.","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","nullable":true,"description":"Authentication token for the session"},"user":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the user"},"email":{"type":"string","format":"email","description":"The email address of the user"},"name":{"type":"string","description":"The name of the user"},"image":{"type":"string","format":"uri","nullable":true,"description":"The profile image URL of the user"},"emailVerified":{"type":"boolean","description":"Whether the email has been verified"},"createdAt":{"type":"string","format":"date-time","description":"When the user was created"},"updatedAt":{"type":"string","format":"date-time","description":"When the user was last updated"}},"required":["id","email","name","emailVerified","createdAt","updatedAt"]}},"required":["user"]},"example":{"token":"sess_example_not_a_live_token","user":{"id":"user_northwind_ops","email":"treasury@northwind.example","name":"Northwind Treasury","image":"https://static.northwind.example/avatars/treasury.png","emailVerified":false,"createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"422":{"description":"Unprocessable Entity. User already exists or failed to create user.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Sign up with email and password","x-dalp-auth":"none"}},"/api/auth/sign-in/email":{"post":{"tags":["Sessions and sign-in"],"description":"Authenticates with email and password and opens a session. Email and password sign-in may be disabled when the deployment uses only an identity provider. Store the session on success. If login two-factor is enabled, complete that challenge before treating the user as signed in.","operationId":"signInEmail","security":[],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the user"},"password":{"type":"string","description":"Password of the user"},"callbackURL":{"type":"string","description":"Callback URL to use as a redirect for email verification"},"rememberMe":{"type":"boolean","description":"If this is false, the session will not be remembered. Default is `true`."}},"required":["email","password"]}}}},"responses":{"200":{"description":"Authenticates with email and password and opens a session.","content":{"application/json":{"schema":{"type":"object","description":"Session response when idToken is provided","properties":{"redirect":{"type":"boolean","enum":[false]},"token":{"type":"string","description":"Session token"},"url":{"type":"string","nullable":true},"user":{"type":"object","$ref":"#/components/schemas/User"}},"required":["redirect","token","user"]},"example":{"redirect":false,"token":"sess_example_not_a_live_token","url":null,"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Sign in with email and password","x-dalp-auth":"none"}},"/api/auth/reset-password":{"post":{"tags":["Sessions and sign-in"],"description":"Replaces the password using the token from the reset email. After success, sign in with the new password. Do not reuse the token.","operationId":"resetPassword","security":[],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newPassword":{"type":"string","description":"The new password to set"},"token":{"type":"string","description":"The token to reset the password"}},"required":["newPassword"]}}}},"responses":{"200":{"description":"Replaces the password using the token from the reset email.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Set a new password with a token","x-dalp-auth":"none"}},"/api/auth/verify-email":{"get":{"tags":["Sessions and sign-in"],"description":"Confirms the email using the token from the verification message. You may include a callback URL for the browser redirect. After success, treat the email as verified.","security":[],"parameters":[{"name":"token","in":"query","description":"The token to verify the email","required":true,"schema":{"type":"string"}},{"name":"callbackURL","in":"query","description":"The URL to redirect to after email verification","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Confirms the email using the token from the verification message.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","$ref":"#/components/schemas/User"},"status":{"type":"boolean","description":"Indicates if the email was verified successfully"}},"required":["user","status"]},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"},"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Verify the email address","operationId":"auth_get_verify_email","x-dalp-auth":"none"}},"/api/auth/change-email":{"post":{"tags":["Sessions and sign-in"],"operationId":"changeEmail","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newEmail":{"type":"string","description":"The new email address to set must be a valid email address"},"callbackURL":{"type":"string","description":"The URL to redirect to after email verification"}},"required":["newEmail"]}}}},"responses":{"200":{"description":"Requests a new email for the signed-in user.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","$ref":"#/components/schemas/User"},"status":{"type":"boolean","description":"Indicates if the request was successful"},"message":{"type":"string","enum":["Email updated","Verification email sent"],"description":"Status message of the email change process","nullable":true}},"required":["status"]},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"},"status":true,"message":"Verification email sent"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Change the account email","description":"Requests a new email for the signed-in user. A session is required. The user must confirm the new address from the verification message before it becomes the login email.","x-dalp-auth":"session"}},"/api/auth/change-password":{"post":{"tags":["Sessions and sign-in"],"description":"Replaces the signed-in user's password. Send the current password and the new password. You may also revoke other sessions. After success, use the new password for later sign-in.","operationId":"changePassword","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newPassword":{"type":"string","description":"The new password to set"},"currentPassword":{"type":"string","description":"The current password is required"},"revokeOtherSessions":{"type":"boolean","description":"Must be a boolean value"}},"required":["newPassword","currentPassword"]}}}},"responses":{"200":{"description":"Replaces the signed-in user's password.","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","nullable":true,"description":"New session token if other sessions were revoked"},"user":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the user"},"email":{"type":"string","format":"email","description":"The email address of the user"},"name":{"type":"string","description":"The name of the user"},"image":{"type":"string","format":"uri","nullable":true,"description":"The profile image URL of the user"},"emailVerified":{"type":"boolean","description":"Whether the email has been verified"},"createdAt":{"type":"string","format":"date-time","description":"When the user was created"},"updatedAt":{"type":"string","format":"date-time","description":"When the user was last updated"}},"required":["id","email","name","emailVerified","createdAt","updatedAt"]}},"required":["user"]},"example":{"token":"sess_example_not_a_live_token","user":{"id":"user_northwind_ops","email":"treasury@northwind.example","name":"Northwind Treasury","image":"https://static.northwind.example/avatars/treasury.png","emailVerified":false,"createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Change the account password","x-dalp-auth":"session"}},"/api/auth/update-user":{"post":{"tags":["Sessions and sign-in"],"description":"Updates the signed-in user's display name or image. A session is required. Read the returned user record after the write before showing the profile again.","operationId":"updateUser","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user"},"image":{"type":"string","description":"The image of the user","nullable":true}}}}}},"responses":{"200":{"description":"Updates the signed-in user's display name or image.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","$ref":"#/components/schemas/User"}}},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Update the signed-in profile","x-dalp-auth":"session"}},"/api/auth/delete-user":{"post":{"tags":["Sessions and sign-in"],"description":"Starts or completes deletion of the signed-in account. A fresh session, the account password, or a deletion token may be required. Follow the verification email when one is sent. After the callback succeeds, treat the account as gone.","operationId":"deleteUser","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"callbackURL":{"type":"string","description":"The callback URL to redirect to after the user is deleted"},"password":{"type":"string","description":"The user's password. Required if session is not fresh"},"token":{"type":"string","description":"The deletion verification token"}}}}}},"responses":{"200":{"description":"Starts or completes deletion of the signed-in account.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the operation was successful"},"message":{"type":"string","enum":["User deleted","Verification email sent"],"description":"Status message of the deletion process"}},"required":["success","message"]},"example":{"success":true,"message":"Verification email sent"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Request account deletion","x-dalp-auth":"session"}},"/api/auth/request-password-reset":{"post":{"tags":["Sessions and sign-in"],"description":"Sends a reset message to the named email when an account exists. Do not treat success as proof that the email is registered. Ask the user to open the message and submit the token to set a new password.","operationId":"requestPasswordReset","security":[],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"The email address of the user to send a password reset email to"},"redirectTo":{"type":"string","description":"The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN"}},"required":["email"]}}}},"responses":{"200":{"description":"Sends a reset message to the named email when an account exists.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"},"message":{"type":"string"}}},"example":{"status":true,"message":"If an account exists, a reset message was sent."}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Send a password reset message","x-dalp-auth":"none"}},"/api/auth/reset-password/{token}":{"get":{"tags":["Sessions and sign-in"],"description":"Redirects the browser to the callback URL and carries the reset token. This is the landing path from the reset email. The POST reset-password route is the write that sets the new password.","operationId":"resetPasswordCallback","security":[],"parameters":[{"name":"token","in":"path","required":true,"description":"The token to reset the password","schema":{"type":"string"}},{"name":"callbackURL","in":"query","required":true,"description":"The URL to redirect the user to reset their password","schema":{"type":"string"}}],"responses":{"200":{"description":"Redirects the browser to the callback URL and carries the reset token.","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"}}},"example":{"token":"reset_example_not_a_live_token"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Open the password reset link","x-dalp-auth":"none"}},"/api/auth/list-sessions":{"get":{"tags":["Sessions and sign-in"],"description":"Returns every active session for the signed-in user. Use this list to show where the account is signed in. Pass a token from this list to revoke a specific session.","operationId":"listUserSessions","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Returns every active session for the signed-in user.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Session"}},"example":[{"id":"sess_northwind_console","expiresAt":"2026-03-11T15:42:18.000Z","token":"sess_example_not_a_live_token","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","ipAddress":"203.0.113.10","userAgent":"Mozilla/5.0 NorthwindConsole","userId":"user_northwind_ops","activeOrganizationId":"org_northwind_coffee"}]}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List active sessions","x-dalp-auth":"session"}},"/api/auth/revoke-session":{"post":{"tags":["Sessions and sign-in"],"description":"Invalidates the session identified by the submitted token. A session is required. After success, that token can no longer authenticate.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The token to revoke"}},"required":["token"]}}}},"responses":{"200":{"description":"Invalidates the session identified by the submitted token.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Indicates if the session was revoked successfully"}},"required":["status"]},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Revoke one session","operationId":"auth_post_revoke_session","x-dalp-auth":"session"}},"/api/auth/revoke-other-sessions":{"post":{"tags":["Sessions and sign-in"],"description":"Invalidates every session except the current one. The current session stays valid. Use this after a password change or a lost-device event.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Invalidates every session except the current one.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Indicates if all other sessions were revoked successfully"}},"required":["status"]},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Revoke other sessions","operationId":"auth_post_revoke_other_sessions","x-dalp-auth":"session"}},"/api/auth/delete-user/callback":{"get":{"tags":["Sessions and sign-in"],"description":"Finishes account deletion after the user opens the verification link. The query carries the token. After success, the account is gone and any later session is invalid.","security":[{"sessionCookie":[]}],"parameters":[{"name":"token","in":"query","schema":{"type":"string","description":"The token to verify the deletion request"}},{"name":"callbackURL","in":"query","schema":{"type":"string","description":"The URL to redirect to after deletion"}}],"responses":{"200":{"description":"Finishes account deletion after the user opens the verification link.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the deletion was successful"},"message":{"type":"string","enum":["User deleted"],"description":"Confirmation message"}},"required":["success","message"]},"example":{"success":true,"message":"User deleted"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Complete account deletion","operationId":"auth_get_delete_user_callback","x-dalp-auth":"session"}},"/api/auth/jwks":{"get":{"tags":["Sessions and sign-in"],"description":"Returns the public keys that sign identity tokens. Use a key from this set to verify the signature of a token from GET /token.","operationId":"getJSONWebKeySet","security":[],"parameters":[],"responses":{"200":{"description":"Returns the public keys that sign identity tokens.","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","description":"Array of public JSON Web Keys","items":{"type":"object","properties":{"kid":{"type":"string","description":"Key ID uniquely identifying the key, corresponds to the 'id' from the stored Jwk"},"kty":{"type":"string","description":"Key type (e.g., 'RSA', 'EC', 'OKP')"},"alg":{"type":"string","description":"Algorithm intended for use with the key (e.g., 'EdDSA', 'RS256')"},"use":{"type":"string","description":"Intended use of the public key (e.g., 'sig' for signature)","enum":["sig"],"nullable":true},"n":{"type":"string","description":"Modulus for RSA keys (base64url-encoded)","nullable":true},"e":{"type":"string","description":"Exponent for RSA keys (base64url-encoded)","nullable":true},"crv":{"type":"string","description":"Curve name for elliptic curve keys (e.g., 'Ed25519', 'P-256')","nullable":true},"x":{"type":"string","description":"X coordinate for elliptic curve keys (base64url-encoded)","nullable":true},"y":{"type":"string","description":"Y coordinate for elliptic curve keys (base64url-encoded)","nullable":true}},"required":["kid","kty","alg"]}}},"required":["keys"]},"example":{"keys":[{"kid":"jwk_northwind_signing","kty":"EC","alg":"ES256","use":"sig","crv":"P-256","x":"sample_x_not_a_live_key","y":"sample_y_not_a_live_key"}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Read the token signing keys","x-dalp-auth":"none"}},"/api/auth/token":{"get":{"tags":["Sessions and sign-in"],"description":"Returns a signed identity token for the current session. A session is required. Verify the token against the keys from GET /jwks.","operationId":"getJSONWebToken","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Returns a signed identity token for the current session.","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"}}},"example":{"token":"jwt_example_not_a_live_token"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Read an identity token","x-dalp-auth":"session"}},"/api/auth/admin/set-role":{"post":{"tags":["Authentication administration"],"description":"Assigns a platform role to the named user. Only a platform administrator can call this. After success, later permission checks use the new role.","operationId":"setUserRole","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The user id"},"role":{"anyOf":[{"type":"string","description":"The role to set. `admin` or `user` by default"},{"type":"array","items":{"type":"string","description":"The roles to set. `admin` or `user` by default"}}],"description":"The role to set, this can be a string or an array of strings. Eg: `admin` or `[admin, user]`"}},"required":["userId","role"]}}}},"responses":{"200":{"description":"Assigns a platform role to the named user.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"}}},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"admin","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Set a user's platform role","x-dalp-auth":"session"}},"/api/auth/admin/get-user":{"get":{"tags":["Authentication administration"],"description":"Returns the named user record. Only a platform administrator can call this. Use the result for support or administration, not as the caller's own session.","operationId":"getUser","security":[{"sessionCookie":[]}],"parameters":[{"name":"id","in":"query","schema":{"type":"string","description":"The id of the User"}}],"responses":{"200":{"description":"Returns the named user record.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"}}},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Read a user as administrator","x-dalp-auth":"session"}},"/api/auth/admin/create-user":{"post":{"tags":["Authentication administration"],"description":"Creates a user with email and name. Only a platform administrator can call this. After success, use the returned user id for later admin calls.","operationId":"createUser","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"The email of the user"},"password":{"type":"string"},"name":{"type":"string","description":"The name of the user"},"role":{"anyOf":[{"type":"string","description":"The role of the user"},{"type":"array","items":{"type":"string","description":"The roles of user"}}]},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["email","name"]}}}},"responses":{"200":{"description":"Creates a user with email and name.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"}}},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Create a user as administrator","x-dalp-auth":"session"}},"/api/auth/admin/update-user":{"post":{"tags":["Authentication administration"],"description":"Updates fields on the named user. Only a platform administrator can call this. Send only the fields you intend to change, then read the returned user.","operationId":"adminUpdateUser","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The user id"},"data":{"type":"object","propertyNames":{},"additionalProperties":{},"description":"The user data to update"}},"required":["userId","data"]}}}},"responses":{"200":{"description":"Updates fields on the named user.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"}}},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Update a user as administrator","x-dalp-auth":"session"}},"/api/auth/admin/list-users":{"get":{"tags":["Authentication administration"],"description":"Returns a page of users. Query parameters support search, filter, sort, limit, and offset. Only a platform administrator can call this.","operationId":"listUsers","security":[{"sessionCookie":[]}],"parameters":[{"name":"searchValue","in":"query","schema":{"type":"string"}},{"name":"searchField","in":"query","schema":{"type":"string","enum":["email","name"],"description":"The field to search in, defaults to email. Can be `email` or `name`. Eg: \"name\""}},{"name":"searchOperator","in":"query","schema":{"type":"string","enum":["contains","starts_with","ends_with"],"description":"The operator to use for the search. Can be `contains`, `starts_with` or `ends_with`. Eg: \"contains\""}},{"name":"limit","in":"query","schema":{"anyOf":[{"type":"string","description":"The number of users to return"},{"type":"number"}]}},{"name":"offset","in":"query","schema":{"anyOf":[{"type":"string","description":"The offset to start from"},{"type":"number"}]}},{"name":"sortBy","in":"query","schema":{"type":"string","description":"The field to sort by"}},{"name":"sortDirection","in":"query","schema":{"type":"string","enum":["asc","desc"],"description":"The direction to sort by"}},{"name":"filterField","in":"query","schema":{"type":"string","description":"The field to filter by"}},{"name":"filterValue","in":"query","schema":{"anyOf":[{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string","description":"The value to filter by"},{"type":"number"}]},{"type":"boolean"}]},{"type":"array","items":{"type":"string"}}]},{"type":"array","items":{"type":"number"}}]}},{"name":"filterOperator","in":"query","schema":{"type":"string","enum":["eq","ne","lt","lte","gt","gte","in","not_in","contains","starts_with","ends_with"],"description":"The operator to use for the filter"}}],"responses":{"200":{"description":"Returns a page of users.","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/User"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"}},"required":["users","total"]},"example":{"users":[{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}],"total":1,"limit":20,"offset":0}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List users as administrator","x-dalp-auth":"session"}},"/api/auth/admin/list-user-sessions":{"post":{"tags":["Authentication administration"],"description":"Returns active sessions for the named user. Only a platform administrator can call this. Use a session token from this list to revoke that session.","operationId":"adminListUserSessions","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The user id"}},"required":["userId"]}}}},"responses":{"200":{"description":"Returns active sessions for the named user.","content":{"application/json":{"schema":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/Session"}}}},"example":{"sessions":[{"id":"sess_northwind_console","expiresAt":"2026-03-11T15:42:18.000Z","token":"sess_example_not_a_live_token","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","ipAddress":"203.0.113.10","userAgent":"Mozilla/5.0 NorthwindConsole","userId":"user_northwind_ops","activeOrganizationId":"org_northwind_coffee"}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List a user's sessions","x-dalp-auth":"session"}},"/api/auth/admin/unban-user":{"post":{"tags":["Authentication administration"],"description":"Removes an active ban from the named user. Only a platform administrator can call this. After success, the user can sign in again.","operationId":"unbanUser","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The user id"}},"required":["userId"]}}}},"responses":{"200":{"description":"Removes an active ban from the named user.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"}}},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Lift a user ban","x-dalp-auth":"session"}},"/api/auth/admin/ban-user":{"post":{"tags":["Authentication administration"],"description":"Bans the named user and can include a reason and an expiry in seconds. Only a platform administrator can call this. After success, that user cannot sign in until the ban is lifted or expires.","operationId":"banUser","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The user id"},"banReason":{"type":"string","description":"The reason for the ban"},"banExpiresIn":{"type":"number","description":"The number of seconds until the ban expires"}},"required":["userId"]}}}},"responses":{"200":{"description":"Bans the named user and can include a reason and an expiry in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"}}},"example":{"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":true,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee","banReason":"Administrative hold for review","banExpires":"2026-03-11T15:42:18.000Z"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Ban a user","x-dalp-auth":"session"}},"/api/auth/admin/impersonate-user":{"post":{"tags":["Authentication administration"],"description":"Opens an impersonation session as the named user. Only a platform administrator can call this. Later requests act as that user until impersonation stops.","operationId":"impersonateUser","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The user id"}},"required":["userId"]}}}},"responses":{"200":{"description":"Opens an impersonation session as the named user.","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"$ref":"#/components/schemas/Session"},"user":{"$ref":"#/components/schemas/User"}}},"example":{"session":{"id":"sess_northwind_console","expiresAt":"2026-03-11T15:42:18.000Z","token":"sess_example_not_a_live_token","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","ipAddress":"203.0.113.10","userAgent":"Mozilla/5.0 NorthwindConsole","userId":"user_northwind_ops","activeOrganizationId":"org_northwind_coffee","impersonatedBy":"user_northwind_admin"},"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Impersonate a user","x-dalp-auth":"session"}},"/api/auth/admin/stop-impersonating":{"post":{"tags":["Authentication administration"],"security":[{"sessionCookie":[]}],"parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Stop impersonating a user","description":"Ends the current impersonation session and restores the administrator session. Call this when support work is finished. After success, you are no longer acting as the impersonated user.","operationId":"auth_post_admin_stop_impersonating","x-dalp-auth":"session"}},"/api/auth/admin/revoke-user-session":{"post":{"tags":["Authentication administration"],"description":"Invalidates the session identified by the submitted token. Only a platform administrator can call this. After success, that token can no longer authenticate.","operationId":"revokeUserSession","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sessionToken":{"type":"string","description":"The session token"}},"required":["sessionToken"]}}}},"responses":{"200":{"description":"Invalidates the session identified by the submitted token.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Revoke a user's session","x-dalp-auth":"session"}},"/api/auth/admin/revoke-user-sessions":{"post":{"tags":["Authentication administration"],"description":"Invalidates all sessions for the named user. Only a platform administrator can call this. The user must sign in again.","operationId":"revokeUserSessions","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The user id"}},"required":["userId"]}}}},"responses":{"200":{"description":"Invalidates all sessions for the named user.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Revoke every session for a user","x-dalp-auth":"session"}},"/api/auth/admin/remove-user":{"post":{"tags":["Authentication administration"],"description":"Deletes the named user and their sessions and accounts. This cannot be undone. Only a platform administrator can call this.","operationId":"removeUser","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The user id"}},"required":["userId"]}}}},"responses":{"200":{"description":"Deletes the named user and their sessions and accounts.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Delete a user as administrator","x-dalp-auth":"session"}},"/api/auth/admin/set-user-password":{"post":{"tags":["Authentication administration"],"description":"Sets a new password for the named user without the current password. Only a platform administrator can call this. Tell the user the new password through a separate channel.","operationId":"setUserPassword","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newPassword":{"type":"string","minLength":1,"description":"The new password"},"userId":{"type":"string","minLength":1,"description":"The user id"}},"required":["newPassword","userId"]}}}},"responses":{"200":{"description":"Sets a new password for the named user without the current password.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Set a user's password","x-dalp-auth":"session"}},"/api/auth/admin/has-permission":{"post":{"tags":["Authentication administration"],"description":"Reports whether the signed-in administrator has the submitted permissions. Use the result to enable or hide admin actions. This call does not grant access by itself.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"type":"object","description":"The permission to check"}},"required":["permissions"]}}}},"responses":{"200":{"description":"Reports whether the signed-in administrator has the submitted permissions.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"success":{"type":"boolean"}},"required":["success"]},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Check administrator permissions","operationId":"auth_post_admin_has_permission","x-dalp-auth":"session"}},"/api/auth/api-key/create":{"post":{"tags":["API keys"],"description":"Creates an API key for the signed-in user or, when permitted, a named organization. The full key is shown only in this response. Store it now. Later reads return only metadata. A session is required; an API key cannot create keys.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"configId":{"type":"string","description":"The configuration ID to use for the API key. If not provided, the default configuration will be used."},"name":{"type":"string","description":"Name of the Api Key"},"expiresIn":{"type":["number","null"],"description":"Expiration time of the Api Key in seconds"},"prefix":{"type":"string","description":"Prefix of the Api Key"},"remaining":{"type":["number","null"],"description":"Remaining number of requests. Server side only"},"metadata":{},"refillAmount":{"type":"number","description":"Amount to refill the remaining count of the Api Key. server-only. Eg: 100"},"refillInterval":{"type":"number","description":"Interval to refill the Api Key in milliseconds. server-only. Eg: 1000"},"rateLimitTimeWindow":{"type":"number","description":"The duration in milliseconds where each request is counted. Once the `maxRequests` is reached, the request will be rejected until the `timeWindow` has passed, at which point the `timeWindow` will be reset. server-only. Eg: 1000"},"rateLimitMax":{"type":"number","description":"Maximum amount of requests allowed within a window. Once the `maxRequests` is reached, the request will be rejected until the `timeWindow` has passed, at which point the `timeWindow` will be reset. server-only. Eg: 100"},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled. server-only. Eg: true"},"permissions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Permissions of the Api Key."},"userId":{"type":"string","description":"User Id of the user that the Api Key belongs to. server-only. Eg: \"user-id\""},"organizationId":{"type":"string","description":"Organization Id of the organization that the Api Key belongs to. Eg: 'org-id'"}}}}}},"responses":{"200":{"description":"Creates an API key for the signed-in user or, when permitted, a named organization.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the API key"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"},"name":{"type":"string","nullable":true,"description":"Name of the API key"},"prefix":{"type":"string","nullable":true,"description":"Prefix of the API key"},"start":{"type":"string","nullable":true,"description":"Starting characters of the key (if configured)"},"key":{"type":"string","description":"The full API key (only returned on creation)"},"enabled":{"type":"boolean","description":"Whether the key is enabled"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiration timestamp"},"referenceId":{"type":"string","description":"ID of the reference owning the key"},"lastRefillAt":{"type":"string","format":"date-time","nullable":true,"description":"Last refill timestamp"},"lastRequest":{"type":"string","format":"date-time","nullable":true,"description":"Last request timestamp"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Metadata associated with the key"},"rateLimitMax":{"type":"number","nullable":true,"description":"Maximum requests in time window"},"rateLimitTimeWindow":{"type":"number","nullable":true,"description":"Rate limit time window in milliseconds"},"remaining":{"type":"number","nullable":true,"description":"Remaining requests"},"refillAmount":{"type":"number","nullable":true,"description":"Amount to refill"},"refillInterval":{"type":"number","nullable":true,"description":"Refill interval in milliseconds"},"rateLimitEnabled":{"type":"boolean","description":"Whether rate limiting is enabled"},"requestCount":{"type":"number","description":"Current request count in window"},"permissions":{"type":"object","nullable":true,"additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Permissions associated with the key"}},"required":["id","createdAt","updatedAt","key","enabled","referenceId","rateLimitEnabled","requestCount"]},"example":{"id":"apikey_northwind_treasury","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","name":"Treasury automation","prefix":"sm_dalp_","start":"sm_dalp_exampl","key":"sm_dalp_example_not_a_live_key","enabled":true,"expiresAt":"2026-03-11T15:42:18.000Z","referenceId":"user_northwind_ops","lastRefillAt":"2026-03-04T15:42:18.000Z","lastRequest":"2026-03-04T15:42:18.000Z","metadata":{"scope":"read-write"},"rateLimitMax":10000,"rateLimitTimeWindow":60000,"remaining":1000,"refillAmount":1000,"refillInterval":3600000,"rateLimitEnabled":true,"requestCount":0,"permissions":{"organization":["read"]}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Create an API key","operationId":"auth_post_api_key_create","x-dalp-auth":"session"}},"/api/auth/api-key/get":{"get":{"tags":["API keys"],"description":"Returns metadata for the API key named by id. The secret key value is not returned. Use this to inspect expiry, remaining requests, and enabled state.","security":[{"sessionCookie":[]},{"apiKey":[]}],"parameters":[{"name":"configId","in":"query","schema":{"type":"string","description":"The configuration ID to use for the API key lookup. If not provided, the default configuration will be used."}},{"name":"id","in":"query","schema":{"type":"string","description":"The id of the Api Key"}}],"responses":{"200":{"description":"Returns metadata for the API key named by id.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"ID"},"name":{"type":"string","nullable":true,"description":"The name of the key"},"start":{"type":"string","nullable":true,"description":"Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key."},"prefix":{"type":"string","nullable":true,"description":"The API Key prefix. Stored as plain text."},"userId":{"type":"string","description":"The owner of the user id"},"refillInterval":{"type":"number","nullable":true,"description":"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},"refillAmount":{"type":"number","nullable":true,"description":"The amount to refill"},"lastRefillAt":{"type":"string","format":"date-time","nullable":true,"description":"The last refill date"},"enabled":{"type":"boolean","description":"Sets if key is enabled or disabled","default":true},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled"},"rateLimitTimeWindow":{"type":"number","nullable":true,"description":"The duration in milliseconds"},"rateLimitMax":{"type":"number","nullable":true,"description":"Maximum amount of requests allowed within a window"},"requestCount":{"type":"number","description":"The number of requests made within the rate limit time window"},"remaining":{"type":"number","nullable":true,"description":"Remaining requests (every time api key is used this should updated and should be updated on refill as well)"},"lastRequest":{"type":"string","format":"date-time","nullable":true,"description":"When last request occurred"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiry date of a key"},"createdAt":{"type":"string","format":"date-time","description":"created at"},"updatedAt":{"type":"string","format":"date-time","description":"updated at"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Extra metadata about the apiKey"},"permissions":{"type":"string","nullable":true,"description":"Permissions for the api key (stored as JSON string)"}},"required":["id","userId","enabled","rateLimitEnabled","requestCount","createdAt","updatedAt"]},"example":{"id":"apikey_northwind_treasury","name":"Treasury automation","start":"sm_dalp_exampl","prefix":"sm_dalp_","userId":"user_northwind_ops","refillInterval":3600000,"refillAmount":1000,"lastRefillAt":"2026-03-04T15:42:18.000Z","enabled":true,"rateLimitEnabled":true,"rateLimitTimeWindow":60000,"rateLimitMax":10000,"requestCount":12,"remaining":988,"lastRequest":"2026-03-04T15:42:18.000Z","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","metadata":{"scope":"read-write"},"permissions":"{\"organization\":[\"read\"]}"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Read an API key","operationId":"auth_get_api_key_get","x-dalp-auth":"session-or-api-key"}},"/api/auth/api-key/update":{"post":{"tags":["API keys"],"description":"Updates metadata, expiry, or enabled state for the named API key. A session is required. An API key cannot update keys. Read the returned record to confirm the change. The secret key value is not returned.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"configId":{"type":"string","description":"The configuration ID to use for the API key lookup. If not provided, the default configuration will be used."},"keyId":{"type":"string","description":"The id of the Api Key"},"userId":{"type":"string","description":"The id of the user which the api key belongs to. server-only. Eg: \"some-user-id\""},"name":{"type":"string","description":"The name of the key"},"enabled":{"type":"boolean","description":"Whether the Api Key is enabled or not"},"remaining":{"type":"number","description":"The number of remaining requests"},"refillAmount":{"type":"number","description":"The refill amount"},"refillInterval":{"type":"number","description":"The refill interval"},"metadata":{},"expiresIn":{"type":["number","null"],"description":"Expiration time of the Api Key in seconds"},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled."},"rateLimitTimeWindow":{"type":"number","description":"The duration in milliseconds where each request is counted. server-only. Eg: 1000"},"rateLimitMax":{"type":"number","description":"Maximum amount of requests allowed within a window. Once the `maxRequests` is reached, the request will be rejected until the `timeWindow` has passed, at which point the `timeWindow` will be reset. server-only. Eg: 100"},"permissions":{"type":["object","null"],"propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Update the permissions on the API Key. server-only."}},"required":["keyId"]}}}},"responses":{"200":{"description":"Updates metadata, expiry, or enabled state for the named API key.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"ID"},"name":{"type":"string","nullable":true,"description":"The name of the key"},"start":{"type":"string","nullable":true,"description":"Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key."},"prefix":{"type":"string","nullable":true,"description":"The API Key prefix. Stored as plain text."},"userId":{"type":"string","description":"The owner of the user id"},"refillInterval":{"type":"number","nullable":true,"description":"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},"refillAmount":{"type":"number","nullable":true,"description":"The amount to refill"},"lastRefillAt":{"type":"string","format":"date-time","nullable":true,"description":"The last refill date"},"enabled":{"type":"boolean","description":"Sets if key is enabled or disabled","default":true},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled"},"rateLimitTimeWindow":{"type":"number","nullable":true,"description":"The duration in milliseconds"},"rateLimitMax":{"type":"number","nullable":true,"description":"Maximum amount of requests allowed within a window"},"requestCount":{"type":"number","description":"The number of requests made within the rate limit time window"},"remaining":{"type":"number","nullable":true,"description":"Remaining requests (every time api key is used this should updated and should be updated on refill as well)"},"lastRequest":{"type":"string","format":"date-time","nullable":true,"description":"When last request occurred"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiry date of a key"},"createdAt":{"type":"string","format":"date-time","description":"created at"},"updatedAt":{"type":"string","format":"date-time","description":"updated at"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Extra metadata about the apiKey"},"permissions":{"type":"string","nullable":true,"description":"Permissions for the api key (stored as JSON string)"}},"required":["id","userId","enabled","rateLimitEnabled","requestCount","createdAt","updatedAt"]},"example":{"id":"apikey_northwind_treasury","name":"Treasury automation","start":"sm_dalp_exampl","prefix":"sm_dalp_","userId":"user_northwind_ops","refillInterval":3600000,"refillAmount":1000,"lastRefillAt":"2026-03-04T15:42:18.000Z","enabled":true,"rateLimitEnabled":true,"rateLimitTimeWindow":60000,"rateLimitMax":10000,"requestCount":12,"remaining":988,"lastRequest":"2026-03-04T15:42:18.000Z","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","metadata":{"scope":"read-write"},"permissions":"{\"organization\":[\"read\"]}"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Update an API key","operationId":"auth_post_api_key_update","x-dalp-auth":"session"}},"/api/auth/api-key/delete":{"post":{"tags":["API keys"],"description":"Deletes the named API key. After success, that key can no longer authenticate. Issue a new key if the caller still needs programmatic access.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keyId":{"type":"string","description":"The id of the API key to delete"}},"required":["keyId"]}}}},"responses":{"200":{"description":"Deletes the named API key.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the API key was successfully deleted"}},"required":["success"]},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Delete an API key","operationId":"auth_post_api_key_delete","x-dalp-auth":"session"}},"/api/auth/api-key/list":{"get":{"tags":["API keys"],"description":"Returns API key metadata for the signed-in user or a specific organization. Secret key values are not included. Use an id from this list to read, update, or delete a key.","security":[{"sessionCookie":[]},{"apiKey":[]}],"parameters":[],"responses":{"200":{"description":"Returns API key metadata for the signed-in user or a specific organization.","content":{"application/json":{"schema":{"type":"object","properties":{"apiKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID"},"name":{"type":"string","nullable":true,"description":"The name of the key"},"start":{"type":"string","nullable":true,"description":"Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key."},"prefix":{"type":"string","nullable":true,"description":"The API Key prefix. Stored as plain text."},"userId":{"type":"string","description":"The owner of the user id"},"refillInterval":{"type":"number","nullable":true,"description":"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},"refillAmount":{"type":"number","nullable":true,"description":"The amount to refill"},"lastRefillAt":{"type":"string","format":"date-time","nullable":true,"description":"The last refill date"},"enabled":{"type":"boolean","description":"Sets if key is enabled or disabled","default":true},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled"},"rateLimitTimeWindow":{"type":"number","nullable":true,"description":"The duration in milliseconds"},"rateLimitMax":{"type":"number","nullable":true,"description":"Maximum amount of requests allowed within a window"},"requestCount":{"type":"number","description":"The number of requests made within the rate limit time window"},"remaining":{"type":"number","nullable":true,"description":"Remaining requests (every time api key is used this should updated and should be updated on refill as well)"},"lastRequest":{"type":"string","format":"date-time","nullable":true,"description":"When last request occurred"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiry date of a key"},"createdAt":{"type":"string","format":"date-time","description":"created at"},"updatedAt":{"type":"string","format":"date-time","description":"updated at"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Extra metadata about the apiKey"},"permissions":{"type":"string","nullable":true,"description":"Permissions for the api key (stored as JSON string)"}},"required":["id","userId","enabled","rateLimitEnabled","requestCount","createdAt","updatedAt"]}},"total":{"type":"number","description":"Total number of API keys"},"limit":{"type":"number","nullable":true,"description":"The limit used for pagination"},"offset":{"type":"number","nullable":true,"description":"The offset used for pagination"}},"required":["apiKeys","total"]},"example":{"apiKeys":[{"id":"apikey_northwind_treasury","name":"Treasury automation","start":"sm_dalp_exampl","prefix":"sm_dalp_","userId":"user_northwind_ops","refillInterval":3600000,"refillAmount":1000,"lastRefillAt":"2026-03-04T15:42:18.000Z","enabled":true,"rateLimitEnabled":true,"rateLimitTimeWindow":60000,"rateLimitMax":10000,"requestCount":12,"remaining":988,"lastRequest":"2026-03-04T15:42:18.000Z","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","metadata":{"scope":"read-write"},"permissions":"{\"organization\":[\"read\"]}"}],"total":1,"limit":20,"offset":0}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List API keys","operationId":"auth_get_api_key_list","x-dalp-auth":"session-or-api-key"}},"/api/auth/passkey/generate-register-options":{"get":{"tags":["Account security"],"description":"Returns WebAuthn registration options for the signed-in user. Pass them to the authenticator, then send the authenticator result to the registration verify route.","operationId":"generatePasskeyRegistrationOptions","security":[{"sessionCookie":[]}],"parameters":[{"name":"authenticatorAttachment","in":"query","required":false,"description":"Type of authenticator to use for registration.\n                          \"platform\" for device-specific authenticators,\n                          \"cross-platform\" for authenticators that can be used across devices.","schema":{"type":"string","enum":["platform","cross-platform"]}},{"name":"name","in":"query","required":false,"description":"Optional custom name for the passkey.\n                          This can help identify the passkey when managing multiple credentials.","schema":{"type":"string"}},{"name":"context","in":"query","required":false,"description":"Optional context for passkey-first registration flows.","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns WebAuthn registration options for the signed-in user.","content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"string"},"rp":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":"string"}}},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"displayName":{"type":"string"}}},"pubKeyCredParams":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"alg":{"type":"number"}}}},"timeout":{"type":"number"},"excludeCredentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"transports":{"type":"array","items":{"type":"string"}}}}},"authenticatorSelection":{"type":"object","properties":{"authenticatorAttachment":{"type":"string"},"requireResidentKey":{"type":"boolean"},"userVerification":{"type":"string"}}},"attestation":{"type":"string"},"extensions":{"type":"object"}}},"example":{"challenge":"challenge_example_not_live","rp":{"name":"DALP Console","id":"console.northwind.example"},"user":{"id":"user_northwind_ops","name":"treasury@northwind.example","displayName":"Northwind Treasury"},"pubKeyCredParams":[{"type":"public-key","alg":-7},{"type":"public-key","alg":-257}],"timeout":60000,"excludeCredentials":[{"id":"cred_example_northwind_laptop","type":"public-key","transports":["internal"]}],"authenticatorSelection":{"authenticatorAttachment":"platform","requireResidentKey":false,"userVerification":"preferred"},"attestation":"none","extensions":{}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Start passkey registration","x-dalp-auth":"session"}},"/api/auth/passkey/generate-authenticate-options":{"get":{"tags":["Account security"],"description":"Returns WebAuthn authentication options. Pass them to the authenticator, then send the authenticator result to the authentication verify route.","operationId":"passkeyGenerateAuthenticateOptions","security":[],"parameters":[],"responses":{"200":{"description":"Returns WebAuthn authentication options.","content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"string"},"rp":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":"string"}}},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"displayName":{"type":"string"}}},"timeout":{"type":"number"},"allowCredentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"transports":{"type":"array","items":{"type":"string"}}}}},"userVerification":{"type":"string"},"authenticatorSelection":{"type":"object","properties":{"authenticatorAttachment":{"type":"string"},"requireResidentKey":{"type":"boolean"},"userVerification":{"type":"string"}}},"extensions":{"type":"object"}}},"example":{"challenge":"challenge_example_not_live","rp":{"name":"DALP Console","id":"console.northwind.example"},"user":{"id":"user_northwind_ops","name":"treasury@northwind.example","displayName":"Northwind Treasury"},"timeout":60000,"allowCredentials":[{"id":"cred_example_northwind_laptop","type":"public-key","transports":["internal"]}],"userVerification":"preferred","authenticatorSelection":{"authenticatorAttachment":"platform","requireResidentKey":false,"userVerification":"preferred"},"extensions":{}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Start passkey sign-in","x-dalp-auth":"none"}},"/api/auth/passkey/verify-registration":{"post":{"tags":["Account security"],"description":"Verifies the authenticator registration result and stores the passkey. A session is required. After success, the passkey can be used to sign in.","operationId":"passkeyVerifyRegistration","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"response":{},"name":{"type":"string","description":"Name of the passkey"},"createSession":{"type":"boolean","description":"Create a session after registering the passkey"}},"required":["response"]}}}},"responses":{"200":{"description":"Verifies the authenticator registration result and stores the passkey.","content":{"application/json":{"schema":{"type":"object","allOf":[{"$ref":"#/components/schemas/Passkey"},{"type":"object","properties":{"session":{"$ref":"#/components/schemas/Session"},"user":{"$ref":"#/components/schemas/User"}}}]},"example":{"id":"passkey_northwind_laptop","name":"Northwind laptop","publicKey":"pQECAyYgASFYIExamplePublicKeyNotLive","userId":"user_northwind_ops","credentialID":"cred_example_northwind_laptop","counter":7,"deviceType":"platform","backedUp":true,"transports":"internal,hybrid","createdAt":"2026-02-11T09:14:07.000Z","aaguid":"a1b2c3d4-e5f6-4789-a012-3456789abcde"}}}},"400":{"description":"The authentication request is invalid. Correct the request fields before you send it again."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Finish passkey registration","x-dalp-auth":"session"}},"/api/auth/passkey/verify-authentication":{"post":{"tags":["Account security"],"description":"Verifies the authenticator assertion and opens a session. After success, store the session and treat the user as signed in.","operationId":"passkeyVerifyAuthentication","security":[],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"response":{"type":"object","propertyNames":{},"additionalProperties":{}}},"required":["response"]}}}},"responses":{"200":{"description":"Verifies the authenticator assertion and opens a session.","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"$ref":"#/components/schemas/Session"},"user":{"$ref":"#/components/schemas/User"}}},"example":{"session":{"id":"sess_northwind_console","expiresAt":"2026-03-11T15:42:18.000Z","token":"sess_example_not_a_live_token","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","ipAddress":"203.0.113.10","userAgent":"Mozilla/5.0 NorthwindConsole","userId":"user_northwind_ops","activeOrganizationId":"org_northwind_coffee"},"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Finish passkey sign-in","x-dalp-auth":"none"}},"/api/auth/passkey/list-user-passkeys":{"get":{"tags":["Account security"],"description":"Returns every passkey registered for the signed-in user. Use an id from this list to rename or delete a passkey.","security":[{"sessionCookie":[]},{"apiKey":[]}],"parameters":[],"responses":{"200":{"description":"Returns every passkey registered for the signed-in user.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Passkey","required":["id","userId","publicKey","createdAt","updatedAt"]},"description":"Array of passkey objects associated with the user"},"example":[{"id":"passkey_northwind_laptop","name":"Northwind laptop","publicKey":"pQECAyYgASFYIExamplePublicKeyNotLive","userId":"user_northwind_ops","credentialID":"cred_example_northwind_laptop","counter":7,"deviceType":"platform","backedUp":true,"transports":"internal,hybrid","createdAt":"2026-02-11T09:14:07.000Z","aaguid":"a1b2c3d4-e5f6-4789-a012-3456789abcde","updatedAt":"2026-03-04T15:42:18.000Z"}]}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List passkeys","operationId":"auth_get_passkey_list_user_passkeys","x-dalp-auth":"session-or-api-key"}},"/api/auth/passkey/delete-passkey":{"post":{"tags":["Account security"],"description":"Deletes the named passkey from the signed-in account. After success, that passkey can no longer sign the user in.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the passkey to delete. Eg: \"some-passkey-id\""}},"required":["id"]}}}},"responses":{"200":{"description":"Deletes the named passkey from the signed-in account.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Indicates whether the deletion was successful"}},"required":["status"]},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Delete a passkey","operationId":"auth_post_passkey_delete_passkey","x-dalp-auth":"session"}},"/api/auth/dynamic/bridge-token":{"post":{"tags":["Account security"],"description":"Mints a short-lived token for the embedded-wallet environment of the active organization. A session is required. The Console exchanges this token with the wallet provider; an integrator does not call it.","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Mints a short-lived token for the embedded-wallet environment of the active organization.","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The signed bridge token"},"environmentId":{"type":"string","description":"The embedded-wallet environment the token targets"}},"required":["token","environmentId"]},"example":{"token":"jwt_example_not_a_live_token","environmentId":"env_northwind_wallets"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Mint an embedded-wallet bridge token","operationId":"auth_post_dynamic_bridge_token","x-dalp-auth":"session"}},"/api/auth/wallet/pincode/enable":{"post":{"tags":["Account security"],"description":"Stores a 6-digit PIN code on the signed-in account so later signing requests can present it as wallet verification. After onboarding, send the account password. If a PIN is already set, the platform stores nothing. Next, present this PIN on signing requests, and generate recovery codes so you can reset it later.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pincode":{"type":"string","description":"The pincode for wallet verification"},"password":{"type":"string","description":"User password (only required if the user has done the initial onboarding)"}},"required":["pincode"]}}}},"responses":{"200":{"description":"Stores a 6-digit PIN code on the signed-in account so later signing requests can present it as wallet verification.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Success status"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Enable the wallet PIN code","operationId":"auth_post_wallet_pincode_enable","x-dalp-auth":"session"}},"/api/auth/wallet/pincode/disable":{"post":{"tags":["Account security"],"description":"Removes the PIN code from the signed-in account. Send the account password. After success, signing requests can no longer use a PIN until one is enabled again. If no PIN is set, the platform stores nothing.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string"}},"required":["password"]}}}},"responses":{"200":{"description":"Removes the PIN code from the signed-in account.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Success status"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Disable the wallet PIN code","operationId":"auth_post_wallet_pincode_disable","x-dalp-auth":"session"}},"/api/auth/wallet/pincode/update":{"post":{"tags":["Account security"],"description":"Replaces the current PIN code on the signed-in account. Send the account password and the new 6-digit PIN. The previous PIN stops working as soon as this call succeeds. Next, present the new PIN on signing requests.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string"},"newPincode":{"type":"string"}},"required":["password","newPincode"]}}}},"responses":{"200":{"description":"Replaces the current PIN code on the signed-in account.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Success status"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Replace the wallet PIN code","operationId":"auth_post_wallet_pincode_update","x-dalp-auth":"session"}},"/api/auth/wallet/pincode/recover":{"post":{"tags":["Account security"],"description":"Replaces an unconfirmed PIN that has never been used after signing in again through the account's SSO provider. The SSO sign-in must be less than five minutes old. A confirmed or previously used PIN cannot be replaced this way.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newPincode":{"type":"string"}},"required":["newPincode"]}}}},"responses":{"200":{"description":"Replaces an unconfirmed PIN that has never been used after signing in again through the account's SSO provider.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Success status"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Recover an interrupted wallet PIN setup","operationId":"auth_post_wallet_pincode_recover","x-dalp-auth":"session"}},"/api/auth/wallet/pincode/reset":{"post":{"tags":["Account security"],"description":"Sets a new PIN code using one unused recovery code. You do not send the old PIN or the account password. The platform consumes that code. When the last remaining code is used, the response includes a fresh recovery set that you must record now.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"recoveryCode":{"type":"string","description":"A wallet recovery code authorizing the reset"},"newPincode":{"type":"string","description":"The new pincode to set"}},"required":["recoveryCode","newPincode"]}}}},"responses":{"200":{"description":"Sets a new PIN code using one unused recovery code.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Success status"},"recoveryCodes":{"type":"array","items":{"type":"string"},"description":"Fresh recovery codes returned only when the consumed code exhausted the prior set"}}},"example":{"success":true,"recoveryCodes":["k7m2p-9x4qw","n3b8c-2h6jt","p9w4d-7r1vm"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Reset the wallet PIN with a recovery code","operationId":"auth_post_wallet_pincode_reset","x-dalp-auth":"session"}},"/api/auth/wallet/two-factor/enable":{"post":{"tags":["Account security"],"description":"Starts authenticator-app enrollment on the signed-in account and returns a TOTP URI. Wallet two-factor stays off until a code from that URI is verified. After onboarding, send the account password. Next, scan the URI, then call the wallet verify route.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"User password, only required if the user has done the initial onboarding"},"issuer":{"type":"string","description":"Custom issuer for the TOTP URI"}}}}}},"responses":{"200":{"description":"Starts authenticator-app enrollment on the signed-in account and returns a TOTP URI.","content":{"application/json":{"schema":{"type":"object","properties":{"totpURI":{"type":"string","description":"TOTP URI"}}},"example":{"totpURI":"otpauth://totp/DALP:treasury@northwind.example?secret=SAMPLETOTPNOTALIVE&issuer=DALP"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Start wallet two-factor enrollment","operationId":"auth_post_wallet_two_factor_enable","x-dalp-auth":"session"}},"/api/auth/wallet/two-factor/disable":{"post":{"tags":["Account security"],"description":"Turns off authenticator-app verification on the signed-in account. Send the account password. After success, signing requests can no longer use a TOTP code until enrollment runs again.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"User password"}},"required":["password"]}}}},"responses":{"200":{"description":"Turns off authenticator-app verification on the signed-in account.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Disable wallet two-factor","operationId":"auth_post_wallet_two_factor_disable","x-dalp-auth":"session"}},"/api/auth/wallet/two-factor/verify":{"post":{"tags":["Account security"],"description":"Confirms a current 6-digit code from the authenticator app for the signed-in account. On first success after enrollment, wallet two-factor is turned on. Repeated failures lock verification for a cool-down interval.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"The otp code to verify"}},"required":["code"]}}}},"responses":{"200":{"description":"Confirms a current 6-digit code from the authenticator app for the signed-in account.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Verify a wallet authenticator code","operationId":"auth_post_wallet_two_factor_verify","x-dalp-auth":"session"}},"/api/auth/wallet/secret-codes/generate":{"post":{"tags":["Account security"],"description":"Issues a new set of recovery codes for the signed-in account and stores only their hashes. Record the returned codes now. The platform cannot show them again. When confirmed codes already exist, send the account password. Echo the returned verification id to the confirm route.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"User password"}}}}}},"responses":{"200":{"description":"Issues a new set of recovery codes for the signed-in account and stores only their hashes.","content":{"application/json":{"schema":{"type":"object","properties":{"secretCodes":{"type":"array","items":{"type":"string"},"description":"Secret codes"},"rotated":{"type":"boolean","description":"True when a confirmed set was replaced; false for the first generated set."},"verificationId":{"type":"string","description":"Identifier of the verification row the returned codes belong to. Clients MUST echo this back to /confirm so the server can reject confirmations against a rotated-away set."}},"required":["secretCodes","rotated","verificationId"]},"example":{"secretCodes":["k7m2p-9x4qw","n3b8c-2h6jt","p9w4d-7r1vm"],"rotated":false,"verificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Generate wallet recovery codes","operationId":"auth_post_wallet_secret_codes_generate","x-dalp-auth":"session"}},"/api/auth/wallet/secret-codes/confirm":{"post":{"tags":["Account security"],"description":"Records that the signed-in caller stored the recovery codes from generate. Send the verification id that generate returned. A mismatch means those codes were rotated away, and the platform stores no confirmation. Next, use a code on the PIN reset route if you lose the PIN.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stored":{"type":"boolean","description":"Whether the secret codes were stored"},"verificationId":{"type":"string","description":"The verification id returned by /generate. Must match the session's current walletSecretCodeVerificationId; otherwise the caller is confirming a rotated-away set and is rejected."}},"required":["stored","verificationId"]}}}},"responses":{"200":{"description":"Records that the signed-in caller stored the recovery codes from generate.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Secret codes confirmation received"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Confirm wallet recovery codes are stored","operationId":"auth_post_wallet_secret_codes_confirm","x-dalp-auth":"session"}},"/api/auth/two-factor/verify-totp":{"post":{"tags":["Account security"],"description":"Confirms a current authenticator code for login two-factor. On first success after enable, login two-factor is turned on. You may trust this device. After success during sign-in, treat the session as fully signed in.","security":[{"twoFactorCookie":[]},{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"The otp code to verify. Eg: \"012345\""},"trustDevice":{"type":"boolean","description":"If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true"}},"required":["code"]}}}},"responses":{"200":{"description":"Confirms a current authenticator code for login two-factor.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Verify a login TOTP code","operationId":"auth_post_two_factor_verify_totp","x-dalp-auth":"two-factor-pending"}},"/api/auth/two-factor/verify-backup-code":{"post":{"tags":["Account security"],"description":"Confirms a login two-factor backup code. The code is consumed. After success during sign-in, treat the session as fully signed in. Store any remaining codes offline.","security":[{"twoFactorCookie":[]},{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"A backup code to verify. Eg: \"123456\""},"disableSession":{"type":"boolean","description":"If true, the session cookie will not be set."},"trustDevice":{"type":"boolean","description":"If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true"}},"required":["code"]}}}},"responses":{"200":{"description":"Confirms a login two-factor backup code.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the user"},"email":{"type":"string","format":"email","nullable":true,"description":"User's email address"},"emailVerified":{"type":"boolean","nullable":true,"description":"Whether the email is verified"},"name":{"type":"string","nullable":true,"description":"User's name"},"image":{"type":"string","format":"uri","nullable":true,"description":"User's profile image URL"},"twoFactorEnabled":{"type":"boolean","description":"Whether two-factor authentication is enabled for the user"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the user was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the user was last updated"}},"required":["id","twoFactorEnabled","createdAt","updatedAt"],"description":"The authenticated user object with two-factor details"},"session":{"type":"object","properties":{"token":{"type":"string","description":"Session token"},"userId":{"type":"string","description":"ID of the user associated with the session"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the session was created"},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the session expires"}},"required":["token","userId","createdAt","expiresAt"],"description":"The current session object, included unless disableSession is true"}},"required":["user","session"]},"example":{"user":{"id":"user_northwind_ops","email":"treasury@northwind.example","emailVerified":true,"name":"Northwind Treasury","image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","twoFactorEnabled":true},"session":{"token":"sess_example_not_a_live_token","userId":"user_northwind_ops","createdAt":"2026-02-11T09:14:07.000Z","expiresAt":"2026-03-11T15:42:18.000Z"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Verify a login backup code","operationId":"auth_post_two_factor_verify_backup_code","x-dalp-auth":"two-factor-pending"}},"/api/auth/two-factor/enable":{"post":{"tags":["Account security"],"description":"Starts login TOTP enrollment and returns a TOTP URI and backup codes. Send the account password, and omit method or send totp. Login two-factor stays off until a code from that URI is verified. DALP does not send one-time codes by email or SMS, so method otp is rejected with 400.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"User password"},"method":{"type":"string","enum":["otp","totp"]},"issuer":{"type":"string","description":"Custom issuer for the TOTP URI"}},"required":["password"]}}}},"responses":{"200":{"description":"Starts login TOTP enrollment and returns a TOTP URI and backup codes.","content":{"application/json":{"schema":{"type":"object","properties":{"method":{"type":"string","enum":["otp","totp"],"description":"The 2FA method that was enabled."},"totpURI":{"type":"string","description":"TOTP URI for authenticator app setup. Only present when method is 'totp'."},"backupCodes":{"type":"array","items":{"type":"string"},"description":"Recovery backup codes. Only present when method is 'totp'."}},"required":["method"]},"example":{"method":"totp","totpURI":"otpauth://totp/DALP:treasury@northwind.example?secret=SAMPLETOTPNOTALIVE&issuer=DALP","backupCodes":["nw-backup-11","nw-backup-22","nw-backup-33"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Start login two-factor enrollment","operationId":"auth_post_two_factor_enable","x-dalp-auth":"session"}},"/api/auth/two-factor/disable":{"post":{"tags":["Account security"],"description":"Turns off login two-factor for the signed-in account. Send the account password. After success, sign-in no longer requires an authenticator code.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"User password"}},"required":["password"]}}}},"responses":{"200":{"description":"Turns off login two-factor for the signed-in account.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}},"example":{"status":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Disable login two-factor","operationId":"auth_post_two_factor_disable","x-dalp-auth":"session"}},"/api/auth/device/code":{"post":{"tags":["OAuth and device authorization"],"description":"Starts the OAuth device flow described in RFC 8628. Returns a device code and a user code. Show the user code and verification URI, then poll the token route with the device code.","security":[],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"client_id":{"type":"string","description":"The client ID of the application"},"user_id":{"type":"string","description":"The user ID to which the device code should be pre-bound."},"scope":{"type":"string","description":"Space-separated list of scopes"}},"required":["client_id"]}}}},"responses":{"200":{"description":"Starts the OAuth device flow described in RFC 8628.","content":{"application/json":{"schema":{"type":"object","properties":{"device_code":{"type":"string","description":"The device verification code"},"user_code":{"type":"string","description":"The user code to display"},"verification_uri":{"type":"string","format":"uri","description":"The URL for user verification. Defaults to /device if not configured."},"verification_uri_complete":{"type":"string","format":"uri","description":"The complete URL with user code as query parameter."},"expires_in":{"type":"number","description":"Lifetime in seconds of the device code"},"interval":{"type":"number","description":"Minimum polling interval in seconds"}}},"example":{"device_code":"device_example_code_not_live","user_code":"WDJB-MOOO","verification_uri":"https://console.northwind.example/device","verification_uri_complete":"https://console.northwind.example/device?user_code=WDJB-MOOO","expires_in":600,"interval":5}}}},"400":{"description":"The authentication request is invalid. Correct the request fields before you send it again.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_request","invalid_client","unauthorized_client","invalid_scope"]},"error_description":{"type":"string"}}}}}},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["server_error"]},"error_description":{"type":"string"}}}}}}},"summary":"Request a device authorization code","operationId":"auth_post_device_code","x-dalp-auth":"none"}},"/api/auth/device/token":{"post":{"tags":["OAuth and device authorization"],"description":"Polls for tokens after the user approves the device code, as described in RFC 8628. Send the grant type, device code, and client id. Retry while authorization is pending. After approval, store the returned tokens.","security":[],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grant_type":{"enum":["urn:ietf:params:oauth:grant-type:device_code"],"description":"The grant type for device flow"},"device_code":{"type":"string","description":"The device verification code"},"client_id":{"type":"string","description":"The client ID of the application"}},"required":["grant_type","device_code","client_id"]}}}},"responses":{"200":{"description":"Polls for tokens after the user approves the device code, as described in RFC 8628.","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"$ref":"#/components/schemas/Session"},"user":{"$ref":"#/components/schemas/User"}}},"example":{"session":{"id":"sess_northwind_console","expiresAt":"2026-03-11T15:42:18.000Z","token":"sess_example_not_a_live_token","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","ipAddress":"203.0.113.10","userAgent":"Mozilla/5.0 NorthwindConsole","userId":"user_northwind_ops","activeOrganizationId":"org_northwind_coffee"},"user":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}}}}},"400":{"description":"The authentication request is invalid. Correct the request fields before you send it again.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authorization_pending","slow_down","expired_token","access_denied","invalid_request","invalid_grant"]},"error_description":{"type":"string"}}}}}},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Exchange a device code for tokens","operationId":"auth_post_device_token","x-dalp-auth":"none"}},"/api/auth/device":{"get":{"tags":["OAuth and device authorization"],"description":"Returns the status for the submitted user code. Use this on the verification page to show whether the device is pending, approved, or denied.","security":[{"sessionCookie":[]}],"parameters":[{"name":"user_code","in":"query","schema":{"type":"string","description":"The user code to verify"}}],"responses":{"200":{"description":"Returns the status for the submitted user code.","content":{"application/json":{"schema":{"type":"object","properties":{"user_code":{"type":"string","description":"The user code to verify"},"status":{"type":"string","enum":["pending","approved","denied"],"description":"Current status of the device authorization"},"client_id":{"type":"string","description":"The client requesting authorization, returned only to the authenticated user who owns this request"},"scope":{"type":"string","description":"The requested scopes, returned only to the authenticated user who owns this request"}}},"example":{"user_code":"WDJB-MOOO","status":"pending"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Read device authorization status","operationId":"auth_get_device","x-dalp-auth":"optional"}},"/api/auth/device/approve":{"post":{"tags":["OAuth and device authorization"],"description":"Approves the device authorization for the submitted user code. A signed-in user must call this; an API key cannot approve a device sign-in. After success, the polling token request can complete.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userCode":{"type":"string","description":"The user code to approve"}},"required":["userCode"]}}}},"responses":{"200":{"description":"Approves the device authorization for the submitted user code.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Approve a device sign-in","operationId":"auth_post_device_approve","x-dalp-auth":"session"}},"/api/auth/device/deny":{"post":{"tags":["OAuth and device authorization"],"description":"Denies the device authorization for the submitted user code. A signed-in user must call this. The polling token request then fails.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userCode":{"type":"string","description":"The user code to deny"}},"required":["userCode"]}}}},"responses":{"200":{"description":"Denies the device authorization for the submitted user code.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Deny a device sign-in","operationId":"auth_post_device_deny","x-dalp-auth":"session"}},"/api/auth/organization/create":{"post":{"tags":["Organisations and members"],"description":"Creates an organization with a name and slug. A session is required. Organization creation may be limited to platform administrators. After success, the creator is a member. Set the organization active before making tenant-scoped calls.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the organization"},"slug":{"type":"string","minLength":1,"description":"The slug of the organization"},"userId":{"type":"string","description":"The user id of the organization creator. If not provided, the current user will be used. Should only be used by admins or when called by the server. server-only. Eg: \"user-id\""},"logo":{"type":["string","null"],"description":"The logo of the organization"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The metadata of the organization"},"keepCurrentActiveOrganization":{"type":"boolean","description":"Whether to keep the current active organization active after creating a new one. Eg: true"}},"required":["name","slug"]}}}},"responses":{"200":{"description":"Creates an organization with a name and slug.","content":{"application/json":{"schema":{"type":"object","description":"The organization that was created","$ref":"#/components/schemas/Organization"},"example":{"id":"org_northwind_coffee","name":"Northwind Coffee","slug":"northwind-coffee","logo":"https://static.northwind.example/logo.png","createdAt":"2026-02-11T09:14:07.000Z","metadata":"{\"region\":\"eu\"}","onboardingCompletedAt":"2026-02-12T10:00:00.000Z"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Create an organization","operationId":"auth_post_organization_create","x-dalp-auth":"session"}},"/api/auth/organization/update":{"post":{"tags":["Organisations and members"],"description":"Updates the named organization. A session and permission to manage the organization are required. Send only the fields you intend to change, then read the returned organization.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the organization"},"slug":{"type":"string","minLength":1,"description":"The slug of the organization"},"logo":{"type":["string","null"],"description":"The logo of the organization"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The metadata of the organization"}}},"organizationId":{"type":"string","description":"The organization ID. Eg: \"org-id\""}},"required":["data"]}}}},"responses":{"200":{"description":"Updates the named organization.","content":{"application/json":{"schema":{"type":"object","description":"The updated organization","$ref":"#/components/schemas/Organization"},"example":{"id":"org_northwind_coffee","name":"Northwind Coffee","slug":"northwind-coffee","logo":"https://static.northwind.example/logo.png","createdAt":"2026-02-11T09:14:07.000Z","metadata":"{\"region\":\"eu\"}","onboardingCompletedAt":"2026-02-12T10:00:00.000Z"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Update an organization","operationId":"auth_post_organization_update","x-dalp-auth":"session"}},"/api/auth/organization/set-active":{"post":{"tags":["Organisations and members"],"description":"Sets or clears the active organization on the current session. Send an organization id or slug, or null to clear it. Later tenant-scoped calls use this organization.","operationId":"setActiveOrganization","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":["string","null"],"description":"The organization id to set as active. It can be null to unset the active organization. Eg: \"org-id\""},"organizationSlug":{"type":"string","description":"The organization slug to set as active. It can be null to unset the active organization if organizationId is not provided. Eg: \"org-slug\""}}}}}},"responses":{"200":{"description":"Sets or clears the active organization on the current session.","content":{"application/json":{"schema":{"type":"object","description":"The organization","$ref":"#/components/schemas/Organization"},"example":{"id":"org_northwind_coffee","name":"Northwind Coffee","slug":"northwind-coffee","logo":"https://static.northwind.example/logo.png","createdAt":"2026-02-11T09:14:07.000Z","metadata":"{\"region\":\"eu\"}","onboardingCompletedAt":"2026-02-12T10:00:00.000Z"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Set the active organization","x-dalp-auth":"session"}},"/api/auth/organization/get-full-organization":{"get":{"tags":["Organisations and members"],"description":"Returns the full record for the active organization. A session is required. Use this to show the current tenant before you invite members or change settings.","operationId":"getOrganization","security":[{"sessionCookie":[]},{"apiKey":[]}],"parameters":[],"responses":{"200":{"description":"Returns the full record for the active organization.","content":{"application/json":{"schema":{"type":"object","description":"The organization","$ref":"#/components/schemas/Organization"},"example":{"id":"org_northwind_coffee","name":"Northwind Coffee","slug":"northwind-coffee","logo":"https://static.northwind.example/logo.png","createdAt":"2026-02-11T09:14:07.000Z","metadata":"{\"region\":\"eu\"}","onboardingCompletedAt":"2026-02-12T10:00:00.000Z"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Read the active organization","x-dalp-auth":"session-or-api-key"}},"/api/auth/organization/list":{"get":{"tags":["Organisations and members"],"description":"Returns organizations the signed-in user belongs to. Use an id or slug from this list to set the active organization.","security":[{"sessionCookie":[]},{"apiKey":[]}],"parameters":[],"responses":{"200":{"description":"Returns organizations the signed-in user belongs to.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}},"example":[{"id":"org_northwind_coffee","name":"Northwind Coffee","slug":"northwind-coffee","logo":"https://static.northwind.example/logo.png","createdAt":"2026-02-11T09:14:07.000Z","metadata":"{\"region\":\"eu\"}","onboardingCompletedAt":"2026-02-12T10:00:00.000Z"}]}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List the user's organizations","operationId":"auth_get_organization_list","x-dalp-auth":"session-or-api-key"}},"/api/auth/organization/invite-member":{"post":{"tags":["Organisations and members"],"description":"Creates an invitation for an email and role. A session, permission to invite, and a wallet step-up proof in `walletVerification` are required. The role must be `owner` or `member`. The invitee must accept the invitation through the v2 invitation routes before they become a member.","operationId":"createOrganizationInvitation","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"The email address of the user to invite"},"role":{"anyOf":[{"type":"string","description":"The role to assign to the user"},{"type":"array","items":{"type":"string","description":"The roles to assign to the user"}}],"description":"The role(s) to assign to the user. It can be `admin`, `member`, owner. Eg: \"member\""},"organizationId":{"type":"string","description":"The organization ID to invite the user to"},"resend":{"type":"boolean","description":"Resend the invitation email, if the user is already invited. Eg: true"},"teamId":{"anyOf":[{"type":"string","description":"The team ID to invite the user to"},{"type":"array","items":{"type":"string"},"description":"The team IDs to invite the user to"}]},"walletVerification":{"type":"object","properties":{"secretVerificationCode":{"type":"string","description":"The PIN, one-time code, recovery code, or MFA code that proves the inviter holds the wallet"},"verificationType":{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"],"description":"The wallet factor the code belongs to. Defaults to PINCODE"}},"required":["secretVerificationCode"],"description":"Wallet step-up proof. A session request without a valid proof is refused and creates no invitation"}},"required":["email","role","walletVerification"]}}}},"responses":{"200":{"description":"Creates an invitation for an email and role.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"organizationId":{"type":"string"},"inviterId":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","email","role","organizationId","inviterId","status","expiresAt","createdAt"]},"example":{"id":"invite_northwind_analyst","email":"analyst@northwind.example","role":"member","organizationId":"org_northwind_coffee","inviterId":"user_northwind_admin","status":"pending","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Invite a member","x-dalp-auth":"session"}},"/api/auth/organization/cancel-invitation":{"post":{"tags":["Organisations and members"],"security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invitationId":{"type":"string","description":"The ID of the invitation to cancel"}},"required":["invitationId"]}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Cancel an invitation","description":"Cancels the named pending invitation. A session and permission to manage invitations are required. After success, that invitation can no longer be accepted.","operationId":"auth_post_organization_cancel_invitation","x-dalp-auth":"session"}},"/api/auth/organization/get-invitation":{"get":{"tags":["Organisations and members"],"description":"Returns the invitation named by id. Use this to show the invitee the organization and role before they accept or reject it.","security":[{"sessionCookie":[]}],"parameters":[{"name":"id","in":"query","schema":{"type":"string","description":"The ID of the invitation to get"}}],"responses":{"200":{"description":"Returns the invitation named by id.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"organizationId":{"type":"string"},"inviterId":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"organizationName":{"type":"string"},"organizationSlug":{"type":"string"},"inviterEmail":{"type":"string"}},"required":["id","email","role","organizationId","inviterId","status","expiresAt","organizationName","organizationSlug","inviterEmail"]},"example":{"id":"invite_northwind_analyst","email":"analyst@northwind.example","role":"member","organizationId":"org_northwind_coffee","inviterId":"user_northwind_admin","status":"pending","expiresAt":"2026-03-11T15:42:18.000Z","organizationName":"Northwind Coffee","organizationSlug":"northwind-coffee","inviterEmail":"treasury@northwind.example"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Read an invitation","operationId":"auth_get_organization_get_invitation","x-dalp-auth":"session"}},"/api/auth/organization/reject-invitation":{"post":{"tags":["Organisations and members"],"description":"Rejects the named invitation for the signed-in user. After success, the user is not a member and the invitation cannot be accepted.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invitationId":{"type":"string","description":"The ID of the invitation to reject"}},"required":["invitationId"]}}}},"responses":{"200":{"description":"Rejects the named invitation for the signed-in user.","content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"type":"object"},"member":{"type":"object","nullable":true}}},"example":{"invitation":{"id":"invite_northwind_analyst","organizationId":"org_northwind_coffee","email":"analyst@northwind.example","role":"member","status":"pending","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z","inviterId":"user_northwind_admin","onChainRoles":"[\"assetManager\"]","onChainRolesAuthorizedAt":"2026-03-04T15:42:18.000Z"},"member":null}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Reject an invitation","operationId":"auth_post_organization_reject_invitation","x-dalp-auth":"session"}},"/api/auth/organization/list-invitations":{"get":{"tags":["Organisations and members"],"security":[{"sessionCookie":[]}],"parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List organization invitations","description":"Returns invitations for the active organization. A session and permission to manage invitations are required. Use an id from this list to cancel an invitation.","operationId":"auth_get_organization_list_invitations","x-dalp-auth":"session"}},"/api/auth/organization/remove-member":{"post":{"tags":["Organisations and members"],"description":"Removes the member identified by id or email. If no organization id is sent, the active organization is used. After success, that user no longer belongs to the organization.","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"memberIdOrEmail":{"type":"string","description":"The ID or email of the member to remove"},"organizationId":{"type":"string","description":"The ID of the organization to remove the member from. If not provided, the active organization will be used. Eg: \"org-id\""}},"required":["memberIdOrEmail"]}}}},"responses":{"200":{"description":"Removes the member identified by id or email.","content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"organizationId":{"type":"string"},"role":{"type":"string"}},"required":["id","userId","organizationId","role"]}},"required":["member"]},"example":{"member":{"id":"member_northwind_ops","organizationId":"org_northwind_coffee","userId":"user_northwind_ops","role":"member","createdAt":"2026-02-11T09:14:07.000Z"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Remove an organization member","operationId":"auth_post_organization_remove_member","x-dalp-auth":"session"}},"/api/auth/organization/list-user-invitations":{"get":{"tags":["Organisations and members"],"description":"Returns invitations addressed to the signed-in user. Use an id from this list to accept or reject an invitation.","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Returns invitations addressed to the signed-in user.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"organizationId":{"type":"string"},"organizationName":{"type":"string"},"inviterId":{"type":"string","description":"The ID of the user who created the invitation"},"teamId":{"type":"string","description":"The ID of the team associated with the invitation","nullable":true},"status":{"type":"string"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","email","role","organizationId","organizationName","inviterId","status","expiresAt","createdAt"]}},"example":[{"id":"invite_northwind_analyst","email":"analyst@northwind.example","role":"member","organizationId":"org_northwind_coffee","organizationName":"Northwind Coffee","inviterId":"user_northwind_admin","teamId":null,"status":"pending","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z"}]}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List invitations sent to the user","operationId":"auth_get_organization_list_user_invitations","x-dalp-auth":"session"}},"/api/auth/organization/list-members":{"get":{"tags":["Organisations and members"],"security":[{"sessionCookie":[]},{"apiKey":[]}],"parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"List organization members","description":"Returns members of the active organization. A session is required. Use a member id from this list to change a role or remove a member.","operationId":"auth_get_organization_list_members","x-dalp-auth":"session-or-api-key"}},"/api/auth/organization/has-permission":{"post":{"tags":["Organisations and members"],"description":"Reports whether the signed-in user has the submitted permissions in the organization. Use the result to enable or hide tenant actions. This call does not grant access by itself.","security":[{"sessionCookie":[]},{"apiKey":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"permission":{"type":"object","description":"The permission to check","deprecated":true},"permissions":{"type":"object","description":"The permission to check"}},"required":["permissions"]}}}},"responses":{"200":{"description":"Reports whether the signed-in user has the submitted permissions in the organization.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"success":{"type":"boolean"}},"required":["success"]},"example":{"success":true}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"The request has no accepted session or API key. Send `X-Api-Key` or sign in, then retry."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The authenticated caller cannot perform this operation. Use a session or API key with the required organisation, role, participant, or key scope."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"The Platform API could not complete the request because of an unexpected server failure. Retry later and include the `X-Request-Id` from this response if you contact support."}},"summary":"Check organization permissions","operationId":"auth_post_organization_has_permission","x-dalp-auth":"session-or-api-key"}}},"components":{"schemas":{"DalpPublicHttpError504":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","USER_NOT_AUTHORIZED","NOT_ONBOARDED","SYSTEM_NOT_CREATED","NOT_FOUND","CONFLICT","RESOURCE_ALREADY_EXISTS","INPUT_VALIDATION_FAILED","TOKEN_INTERFACE_NOT_SUPPORTED","INTERNAL_SERVER_ERROR","PORTAL_ERROR","THE_GRAPH_ERROR","CONFIRMATION_TIMEOUT"]},"status":{"type":"integer","enum":[504]},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/DALP_PUBLIC_ERROR_DATA_SCHEMA"}},"required":["code","status","message","data"],"additionalProperties":false,"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step."},"DALP_PUBLIC_ERROR_DATA_SCHEMA":{"type":"object","properties":{"id":{"type":"string","pattern":"^DALP-(?:\\d{4,}|[A-Z0-9]+(?:-[A-Z0-9]+)+)$","description":"Stable public error id. Branch on this value, not on the headline text.","examples":["DALP-0670"]},"why":{"type":"string","minLength":1,"description":"The condition that stopped the request, in customer terms.","examples":["Each platform user must have a unique email address."]},"fix":{"type":"string","minLength":1,"description":"The next step that unblocks the request.","examples":["Use a different email or open the existing user in User management."]},"retryable":{"type":"boolean","description":"When true, the same request can succeed later without changing inputs.","examples":[false]},"category":{"type":"string","enum":["client","auth","permission","domain","contract","dependency","operational","unknown","vendor-boundary"],"description":"Public failure family used for client branching and support routing.","examples":["client"]},"requestId":{"type":"string","description":"Request correlation id to send to support. Omit when the edge did not assign one.","examples":["req_2c8f1a4e0b7d4e11"]}},"required":["id","why","fix","retryable","category"],"allOf":[{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DalpPublicJsonValue"}}],"description":"Public recovery guidance and safe error context. The object always includes `id`, `why`, `fix`, `retryable`, and `category`. Extra keys are entry-specific and never include secrets or stack traces.","examples":[{"id":"DALP-0670","why":"Each platform user must have a unique email address.","fix":"Use a different email or open the existing user in User management.","retryable":false,"category":"client","requestId":"req_2c8f1a4e0b7d4e11"}]},"DalpPublicJsonValue":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/components/schemas/DalpPublicJsonValue"}},{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DalpPublicJsonValue"}}],"description":"JSON-safe public error field. Never a function, Date, secret, or stack trace."},"DalpPublicHttpError401":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","USER_NOT_AUTHORIZED","NOT_ONBOARDED","SYSTEM_NOT_CREATED","NOT_FOUND","CONFLICT","RESOURCE_ALREADY_EXISTS","INPUT_VALIDATION_FAILED","TOKEN_INTERFACE_NOT_SUPPORTED","INTERNAL_SERVER_ERROR","PORTAL_ERROR","THE_GRAPH_ERROR","CONFIRMATION_TIMEOUT"]},"status":{"type":"integer","enum":[401]},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/DALP_PUBLIC_ERROR_DATA_SCHEMA"}},"required":["code","status","message","data"],"additionalProperties":false,"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step."},"DalpPublicHttpError500":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","USER_NOT_AUTHORIZED","NOT_ONBOARDED","SYSTEM_NOT_CREATED","NOT_FOUND","CONFLICT","RESOURCE_ALREADY_EXISTS","INPUT_VALIDATION_FAILED","TOKEN_INTERFACE_NOT_SUPPORTED","INTERNAL_SERVER_ERROR","PORTAL_ERROR","THE_GRAPH_ERROR","CONFIRMATION_TIMEOUT"]},"status":{"type":"integer","enum":[500]},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/DALP_PUBLIC_ERROR_DATA_SCHEMA"}},"required":["code","status","message","data"],"additionalProperties":false,"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step."},"DalpPublicHttpError422":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","USER_NOT_AUTHORIZED","NOT_ONBOARDED","SYSTEM_NOT_CREATED","NOT_FOUND","CONFLICT","RESOURCE_ALREADY_EXISTS","INPUT_VALIDATION_FAILED","TOKEN_INTERFACE_NOT_SUPPORTED","INTERNAL_SERVER_ERROR","PORTAL_ERROR","THE_GRAPH_ERROR","CONFIRMATION_TIMEOUT"]},"status":{"type":"integer","enum":[422]},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/DALP_PUBLIC_ERROR_DATA_SCHEMA"}},"required":["code","status","message","data"],"additionalProperties":false,"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step."},"DalpPublicHttpError409":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","USER_NOT_AUTHORIZED","NOT_ONBOARDED","SYSTEM_NOT_CREATED","NOT_FOUND","CONFLICT","RESOURCE_ALREADY_EXISTS","INPUT_VALIDATION_FAILED","TOKEN_INTERFACE_NOT_SUPPORTED","INTERNAL_SERVER_ERROR","PORTAL_ERROR","THE_GRAPH_ERROR","CONFIRMATION_TIMEOUT"]},"status":{"type":"integer","enum":[409]},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/DALP_PUBLIC_ERROR_DATA_SCHEMA"}},"required":["code","status","message","data"],"additionalProperties":false,"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step."},"DalpPublicHttpError404":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","USER_NOT_AUTHORIZED","NOT_ONBOARDED","SYSTEM_NOT_CREATED","NOT_FOUND","CONFLICT","RESOURCE_ALREADY_EXISTS","INPUT_VALIDATION_FAILED","TOKEN_INTERFACE_NOT_SUPPORTED","INTERNAL_SERVER_ERROR","PORTAL_ERROR","THE_GRAPH_ERROR","CONFIRMATION_TIMEOUT"]},"status":{"type":"integer","enum":[404]},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/DALP_PUBLIC_ERROR_DATA_SCHEMA"}},"required":["code","status","message","data"],"additionalProperties":false,"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step."},"DalpPublicHttpError403":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","USER_NOT_AUTHORIZED","NOT_ONBOARDED","SYSTEM_NOT_CREATED","NOT_FOUND","CONFLICT","RESOURCE_ALREADY_EXISTS","INPUT_VALIDATION_FAILED","TOKEN_INTERFACE_NOT_SUPPORTED","INTERNAL_SERVER_ERROR","PORTAL_ERROR","THE_GRAPH_ERROR","CONFIRMATION_TIMEOUT"]},"status":{"type":"integer","enum":[403]},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/DALP_PUBLIC_ERROR_DATA_SCHEMA"}},"required":["code","status","message","data"],"additionalProperties":false,"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step."},"DalpPublicHttpError400":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","USER_NOT_AUTHORIZED","NOT_ONBOARDED","SYSTEM_NOT_CREATED","NOT_FOUND","CONFLICT","RESOURCE_ALREADY_EXISTS","INPUT_VALIDATION_FAILED","TOKEN_INTERFACE_NOT_SUPPORTED","INTERNAL_SERVER_ERROR","PORTAL_ERROR","THE_GRAPH_ERROR","CONFIRMATION_TIMEOUT"]},"status":{"type":"integer","enum":[400]},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/DALP_PUBLIC_ERROR_DATA_SCHEMA"}},"required":["code","status","message","data"],"additionalProperties":false,"description":"Frozen v1 error envelope. `code` is the legacy v1 code for the status; read `data.id` to identify the failure, and `data.why` plus `data.fix` for the condition and next step."},"XvpExecuteOutput":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Hash of the XvP mutation that was submitted.","examples":["0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"]}},"required":["transactionHash"],"additionalProperties":false,"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","examples":[{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}]},"XvpSettlementMutationInput":{"type":"object","properties":{"settlementAddress":{"$ref":"#/components/schemas/EvmAddress"},"externalMessageAuthorization":{"$ref":"#/components/schemas/ExternalMessageAuthorization_2"},"walletVerification":{"$ref":"#/components/schemas/UserVerification_8"}},"required":["settlementAddress"],"additionalProperties":false,"description":"Settlement to mutate. Send the settlement contract address. Omit `walletVerification` for an EOA executor.","examples":[{"settlementAddress":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9"}]},"UserVerification_8":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"ExternalMessageAuthorization_2":{"type":"object","properties":{"signature":{"$ref":"#/components/schemas/EthereumHexEncoded"}},"required":["signature"],"additionalProperties":false,"description":"External-wallet signature over the exact signing payload prepared by the Platform API."},"EthereumHexEncoded":{"type":"string","minLength":2,"description":"A valid Ethereum hex string starting with 0x","examples":["0x5208"]},"EvmAddress":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"A valid Ethereum address (42 characters, starting with 0x)","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]},"XvpWithdrawExpiredOutput":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Hash of the XvP mutation that was submitted.","examples":["0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"]}},"required":["transactionHash"],"additionalProperties":false,"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","examples":[{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}]},"XvpWithdrawCancelOutput":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Hash of the XvP mutation that was submitted.","examples":["0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"]}},"required":["transactionHash"],"additionalProperties":false,"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","examples":[{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}]},"XvpCancelOutput":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Hash of the XvP mutation that was submitted.","examples":["0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"]}},"required":["transactionHash"],"additionalProperties":false,"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","examples":[{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}]},"XvpRevokeApprovalOutput":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Hash of the XvP mutation that was submitted.","examples":["0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"]}},"required":["transactionHash"],"additionalProperties":false,"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","examples":[{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}]},"XvpApproveOutput":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Hash of the XvP mutation that was submitted.","examples":["0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"]}},"required":["transactionHash"],"additionalProperties":false,"description":"Submitted XvP mutation. On the v2 surface this payload is wrapped in the 200/202 mutation envelope.","examples":[{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}]},"XvpRevealSecretOutput":{"type":"object","properties":{"transactionHash":{"type":"string"},"emailResults":{"type":"array","items":{"$ref":"#/components/schemas/EmailSendResult"}}},"required":["transactionHash"],"additionalProperties":false,"description":"The reveal transaction hash and optional email delivery results.","examples":[{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae","emailResults":[{"recipient":"ops@northwind.example","success":true}]}]},"EmailSendResult":{"type":"object","properties":{"recipient":{"type":"string"},"success":{"type":"boolean"},"error":{"type":"string"}},"required":["recipient","success"],"additionalProperties":false},"XvpRevealSecretInput":{"type":"object","properties":{"settlementAddress":{"$ref":"#/components/schemas/EvmAddress"},"externalMessageAuthorization":{"$ref":"#/components/schemas/ExternalMessageAuthorization_3"},"walletVerification":{"$ref":"#/components/schemas/UserVerification_9"},"secret":{"type":"string","minLength":32,"maxLength":1024,"description":"Raw HTLC secret pre-image (plain text string)."},"emailRecipients":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":10},{"type":"null"}]},"settlementName":{"type":"string"}},"required":["settlementAddress","secret"],"additionalProperties":false},"UserVerification_9":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"ExternalMessageAuthorization_3":{"type":"object","properties":{"signature":{"$ref":"#/components/schemas/EthereumHexEncoded"}},"required":["signature"],"additionalProperties":false,"description":"External-wallet signature over the exact signing payload prepared by the Platform API."},"XvpDecryptOutput":{"type":"object","properties":{"secret":{"type":"string","description":"Decrypted hashlock pre-image as a 0x-prefixed hex string.","examples":["0x6e6f72746877696e642d7365726965732d612d707265696d616765"]},"hashlock":{"type":"string","description":"Keccak256 of `secret`. Must match the settlement hashlock before you reveal or execute.","examples":["0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"]}},"required":["secret","hashlock"],"additionalProperties":false,"description":"The decrypted hashlock pre-image and its keccak256 hashlock. Use `secret` only to reveal or execute a hashlocked settlement. A later decrypt of the same stored secret returns these same values.","examples":[{"secret":"0x6e6f72746877696e642d7365726965732d612d707265696d616765","hashlock":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}]},"XvpSettlementRead":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string"},"hasExternalFlows":{"type":"boolean"},"cutoffDate":{"$ref":"#/components/schemas/TimestampEncoded"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"createdBy":{"$ref":"#/components/schemas/AccessControlAccount_6"},"secretRevealTx":{"anyOf":[{"type":"string"},{"type":"null"}]},"executed":{"type":"boolean"},"cancelled":{"type":"boolean"},"withdrawn":{"type":"boolean"},"allApprovedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"approvalsCount":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"},"approvals":{"type":"array","items":{"$ref":"#/components/schemas/XvpSettlementApproval"}},"cancelVotesCount":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"},"localSendersCount":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"},"localParticipantsCount":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"},"secret":{"anyOf":[{"type":"string","description":"Hashlock pre-image when the indexer still holds it in plaintext. Null after reveal or when never stored."},{"type":"null"}]},"secretRevealed":{"type":"boolean"},"secretRevealedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"secretRevealedBy":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"hashlock":{"anyOf":[{"type":"string"},{"type":"null"}]},"autoExecute":{"type":"boolean"},"cancelVotes":{"type":"array","items":{"$ref":"#/components/schemas/XvpSettlementCancelVote"}},"flows":{"type":"array","items":{"$ref":"#/components/schemas/XvpSettlementFlowRead"}},"systemAddon":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"hasStoredSecret":{"type":"boolean","description":"Whether an encrypted secret is stored in the database for this settlement"},"userApproved":{"type":"boolean","description":"Whether the current user has approved this settlement"}},"required":["id","name","hasExternalFlows","cutoffDate","createdAt","createdBy","secretRevealTx","executed","cancelled","withdrawn","allApprovedAt","approvalsCount","approvals","cancelVotesCount","localSendersCount","localParticipantsCount","secretRevealed","secretRevealedAt","secretRevealedBy","autoExecute","cancelVotes","flows","systemAddon","hasStoredSecret","userApproved"],"additionalProperties":false,"description":"One XvP settlement with approvals, cancel votes, asset flows, and whether a secret is stored. `userApproved` is relative to the authenticated caller.","examples":[{"id":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","name":"Northwind Series A vs Fabrikam USDC","hasExternalFlows":false,"cutoffDate":"2026-04-20T16:00:00.000Z","createdAt":"2026-03-15T09:12:41.000Z","createdBy":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","isContract":false},"executed":false,"cancelled":false,"withdrawn":false,"allApprovedAt":null,"approvalsCount":1,"cancelVotesCount":0,"localSendersCount":2,"localParticipantsCount":2,"secretRevealed":false,"secretRevealedAt":null,"secretRevealTx":null,"secretRevealedBy":null,"autoExecute":false,"approvals":[{"id":"approval:treasury","approved":true,"timestamp":"2026-03-15T10:00:00.000Z","account":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}}],"cancelVotes":[],"flows":[{"id":"flow:ncb","isExternal":false,"externalChainId":0,"amount":"125000","amountExact":"125000000000000000000000","from":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"to":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"asset":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","decimals":18,"symbol":"NCB"},"assetReference":null},{"id":"flow:usdc","isExternal":false,"externalChainId":0,"amount":"125000","amountExact":"125000000000","from":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"to":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"asset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","decimals":6,"symbol":"USDC"},"assetReference":null}],"systemAddon":{"id":"0x0165878A594ca255338adfa4d48449f69242Eb8F"},"hasStoredSecret":false,"userApproved":true}]},"XvpSettlementFlowRead":{"type":"object","properties":{"id":{"type":"string"},"isExternal":{"type":"boolean"},"externalChainId":{"anyOf":[{"type":"number"},{"type":"string"}]},"amount":{"$ref":"#/components/schemas/BigDecimal"},"amountExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"from":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"to":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"asset":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"symbol":{"$ref":"#/components/schemas/AssetSymbol_4"}},"required":["id","decimals","symbol"],"additionalProperties":false},{"type":"null"}]},"assetReference":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"address":{"$ref":"#/components/schemas/EvmAddress"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","address","decimals"],"additionalProperties":false},{"type":"null"}]}},"required":["id","isExternal","externalChainId","amount","amountExact","from","to","asset","assetReference"],"additionalProperties":false},"DecimalsEncoded":{"anyOf":[{"type":"string"},{"type":"number"}]},"AssetSymbol_4":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Trading symbol for the asset","examples":["ETH","BTC","USDC","AAPL"]},"ApiBigIntEncoded":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^(?:\\s*[-+]?\\d+\\s*|-?(?:\\d+|\\d*\\.\\d+)(?:e[+-]?\\d+)?)$"},{"type":"number","multipleOf":1}]},"BigDecimal":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision"},"XvpSettlementCancelVote":{"type":"object","properties":{"id":{"type":"string"},"votedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"active":{"type":"boolean"},"account":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false}},"required":["id","votedAt","active","account"],"additionalProperties":false},"TimestampEncoded":{"anyOf":[{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"},{"type":"number","minimum":0}]},"XvpSettlementApproval":{"type":"object","properties":{"id":{"type":"string"},"approved":{"type":"boolean"},"timestamp":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"account":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false}},"required":["id","approved","timestamp","account"],"additionalProperties":false},"AccessControlAccount_6":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false},"XvpSettlementListResponse":{"type":"object","properties":{"xvPSettlements":{"$ref":"#/components/schemas/XvpSettlementList"},"total":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"}},"required":["xvPSettlements","total"],"additionalProperties":false,"description":"XvP settlements visible to the selected participant. `total` is the full match count, not a page size.","examples":[{"xvPSettlements":[{"id":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","name":"Northwind Series A vs Fabrikam USDC","hasExternalFlows":false,"cutoffDate":"2026-04-20T16:00:00.000Z","createdAt":"2026-03-15T09:12:41.000Z","createdBy":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","isContract":false},"executed":false,"cancelled":false,"withdrawn":false,"allApprovedAt":null,"approvalsCount":1,"cancelVotesCount":0,"localSendersCount":2,"localParticipantsCount":2,"userApproved":true}],"total":1}]},"XvpSettlementList":{"type":"array","items":{"$ref":"#/components/schemas/XvpSettlementListItem"}},"XvpSettlementListItem":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string"},"hasExternalFlows":{"type":"boolean"},"cutoffDate":{"$ref":"#/components/schemas/TimestampEncoded"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"createdBy":{"$ref":"#/components/schemas/AccessControlAccount_6"},"secretRevealTx":{"anyOf":[{"type":"string"},{"type":"null"}]},"executed":{"type":"boolean"},"cancelled":{"type":"boolean"},"withdrawn":{"type":"boolean"},"allApprovedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"approvalsCount":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"},"approvals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}},"cancelVotesCount":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"},"localSendersCount":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"},"localParticipantsCount":{"anyOf":[{"type":"number"},{"type":"string"}],"type":"integer"},"userApproved":{"type":"boolean"}},"required":["id","name","hasExternalFlows","cutoffDate","createdAt","createdBy","executed","cancelled","withdrawn","allApprovedAt","approvalsCount","cancelVotesCount","localSendersCount","localParticipantsCount","userApproved"],"additionalProperties":false},"XvpSettlementOrderByEncoded":{"anyOf":[{"$ref":"#/components/schemas/XvpSettlementOrderBy"},{"type":"null"}]},"XvpSettlementOrderBy":{"type":"string","enum":["createdAt","cutoffDate","name"]},"XvpCreateOutput":{"type":"object","properties":{"transactionHash":{"type":"string"},"settlementId":{"$ref":"#/components/schemas/EvmAddress"}},"required":["transactionHash","settlementId"],"additionalProperties":false,"description":"The create transaction hash and the deployed settlement address.","examples":[{"transactionHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae","settlementId":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9"}]},"ISOCountryCodeNumericEncoded_3":{"anyOf":[{"type":"string","pattern":"^\\d{1,3}$"},{"type":"number","multipleOf":1,"minimum":0,"maximum":999}]},"XvpSettlementFlow":{"anyOf":[{"$ref":"#/components/schemas/LocalFlow"},{"$ref":"#/components/schemas/ExternalFlow"}]},"ExternalFlow":{"type":"object","properties":{"type":{"type":"string","enum":["external"]},"assetId":{"$ref":"#/components/schemas/EvmAddress"},"from":{"$ref":"#/components/schemas/EvmAddress"},"to":{"$ref":"#/components/schemas/EvmAddress"},"amount":{"$ref":"#/components/schemas/AssetAmount"},"externalChainId":{"type":"integer"},"externalAssetDecimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["type","assetId","from","to","amount","externalChainId","externalAssetDecimals"],"additionalProperties":false},"AssetAmount":{"type":"string","pattern":"^[0-9]+$","description":"Non-negative uint256 asset amount decoded to a bigint"},"LocalFlow":{"type":"object","properties":{"type":{"type":"string","enum":["local"]},"assetId":{"$ref":"#/components/schemas/EvmAddress"},"from":{"$ref":"#/components/schemas/EvmAddress"},"to":{"$ref":"#/components/schemas/EvmAddress"},"amount":{"$ref":"#/components/schemas/AssetAmount"}},"required":["type","assetId","from","to","amount"],"additionalProperties":false},"AdminMutationOutput":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false,"description":"Confirms that the admin change was stored. `success` is always true on a 200 response.","examples":[{"success":true}]},"UserIdEncoded":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"RevokeSessionInput":{"type":"object","properties":{"sessionId":{"type":"string","description":"Identifier of the session to revoke. Read it from the user's security record.","examples":["0194a7d7-58e3-7f10-9c26-4b7d0e91a3f8"]}},"required":["sessionId"],"additionalProperties":false,"description":"Session to end. The user must sign in again on that device.","examples":[{"sessionId":"0194a7d7-58e3-7f10-9c26-4b7d0e91a3f8"}]},"UserSecurityOutput":{"type":"object","properties":{"twoFactorEnabled":{"type":"boolean"},"walletPincodeEnabled":{"type":"boolean"},"walletTwoFactorEnabled":{"type":"boolean"},"walletSecretCodesConfirmed":{"type":"boolean"},"sessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"ipAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"userAgent":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"expiresAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","userId","ipAddress","userAgent","createdAt","updatedAt","expiresAt"],"additionalProperties":false}}},"required":["twoFactorEnabled","walletPincodeEnabled","walletTwoFactorEnabled","walletSecretCodesConfirmed","sessions"],"additionalProperties":false,"description":"Security settings and live sessions for one user. Session tokens are omitted. `createdAt`, `updatedAt`, and `expiresAt` are RFC 3339 timestamps in UTC.","examples":[{"twoFactorEnabled":true,"walletPincodeEnabled":true,"walletTwoFactorEnabled":false,"walletSecretCodesConfirmed":true,"sessions":[{"id":"0194a7d7-58e3-7f10-9c26-4b7d0e91a3f8","userId":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","ipAddress":"203.0.113.42","userAgent":"Mozilla/5.0","createdAt":"2026-03-11T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z","expiresAt":"2026-03-18T09:12:41.000Z"}]}]},"UserIdEncoded_1":{"type":"string","description":"Identifier of the user this admin operation targets, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"CreateUserOutput":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"type":"string"},"participantId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"activationStatus":{"anyOf":[{"type":"string","enum":["pending","active"]},{"type":"null"}]},"custodyAccountId":{"anyOf":[{"$ref":"#/components/schemas/CustodyAccountId"},{"type":"null"}]},"identity":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}]}},"required":["id","name","email","participantId","activationStatus","custodyAccountId","identity"],"additionalProperties":false,"description":"The created user, the managed custody account the platform provisioned, and the identity contract it deployed. Read the custody account for its ledger address. Identity registration is a separate step.","examples":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","participantId":"0198f2f0-6d0b-7f86-8f24-c5e1ef9f9d12","activationStatus":"active","custodyAccountId":"0198f2f0-6d0b-7f86-8f24-c5e1ef9f9d11","identity":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}]},"CustodyAccountId":{"type":"string","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid","description":"Global custody account identifier"},"UserVerification_7":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"CustodyProviderConfigurationId":{"type":"string","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid","description":"Custody provider configuration identifier"},"UserEvent":{"type":"object","properties":{"id":{"type":"string"},"eventName":{"type":"string"},"txIndex":{"type":"string"},"blockNumber":{"type":"string"},"blockTimestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"},"emitter":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"sender":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"metaTxSigner":{"$ref":"#/components/schemas/ActivityMetaTransactionSigner_1"},"displaySender":{"$ref":"#/components/schemas/ActivityDisplaySender_1"},"relayerKind":{"anyOf":[{"type":"string","description":"Relayer type that submitted the meta-transaction.","examples":["user-operation","forwarder"]},{"type":"null"}],"description":"Relayer type that submitted the meta-transaction.","examples":["user-operation","forwarder"]},"relayer":{"$ref":"#/components/schemas/ActivityRelayer_1"},"userOpHash":{"anyOf":[{"$ref":"#/components/schemas/EthereumHashEncoded"},{"type":"null"}],"description":"UserOperation hash from the ERC-4337 EntryPoint."},"paymaster":{"$ref":"#/components/schemas/ActivityPaymaster_1"},"actualGasCost":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"EntryPoint-charged gas cost in wei for this UserOperation.","examples":["128054388000000"]},"involved":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false}},"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["id","name","value"],"additionalProperties":false}}},"required":["id","eventName","txIndex","blockNumber","blockTimestamp","transactionHash","emitter","sender","metaTxSigner","displaySender","relayerKind","relayer","userOpHash","involved"],"additionalProperties":false,"description":"One indexed on-chain event involving the authenticated user's accounts. `blockTimestamp` is an RFC 3339 instant in UTC. `transactionHash` is a 32-byte hex hash. Relayer fields are null when the user submitted the transaction directly.","examples":[{"id":"evt-northwind-transfer-1","eventName":"Transfer","txIndex":"0","blockNumber":"18429103","blockTimestamp":"2026-03-11T16:02:08.000Z","transactionHash":"0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4","emitter":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"sender":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"metaTxSigner":null,"displaySender":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"relayerKind":null,"relayer":null,"userOpHash":null,"involved":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}],"values":[{"id":"val-0","name":"from","value":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},{"id":"val-1","name":"to","value":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}]}]},"ActivityPaymaster_1":{"anyOf":[{"$ref":"#/components/schemas/ActivityPaymasterAddress_1"},{"type":"null"}],"description":"Paymaster that sponsored the UserOperation's gas."},"ActivityPaymasterAddress_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Paymaster that sponsored the UserOperation's gas."},"EthereumHashEncoded":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"ActivityRelayer_1":{"anyOf":[{"$ref":"#/components/schemas/ActivityRelayerAddress_1"},{"type":"null"}],"description":"Relayer EOA that submitted the meta-transaction."},"ActivityRelayerAddress_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Relayer EOA that submitted the meta-transaction."},"ActivityDisplaySender_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Canonical originator address."},"ActivityMetaTransactionSigner_1":{"anyOf":[{"$ref":"#/components/schemas/ActivityMetaTransactionSignerAddress_1"},{"type":"null"}],"description":"EOA attribution for meta-transactions (ERC-2771 or ERC-4337). Null for directly-submitted transactions or events indexed before AA attribution was available."},"ActivityMetaTransactionSignerAddress_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"EOA attribution for meta-transactions (ERC-2771 or ERC-4337). Null for directly-submitted transactions or events indexed before AA attribution was available."},"UserStatsGrowthOverTimeOutput":{"type":"object","properties":{"userGrowth":{"type":"array","items":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"users":{"type":"integer"}},"required":["timestamp","users"],"additionalProperties":false}},"timeRangeDays":{"type":"integer"}},"required":["userGrowth","timeRangeDays"],"additionalProperties":false,"description":"One point per day of organization membership for the requested range. `timestamp` is midnight UTC of that day, and `users` is the membership count at the end of that day.","examples":[{"userGrowth":[{"timestamp":"2026-02-10T00:00:00.000Z","users":31},{"timestamp":"2026-03-11T00:00:00.000Z","users":42}],"timeRangeDays":30}]},"UserStatsUserCountOutput":{"type":"object","properties":{"totalUsers":{"type":"integer"},"recentUsers":{"type":"integer"},"timeRangeDays":{"type":"integer"}},"required":["totalUsers","recentUsers","timeRangeDays"],"additionalProperties":false,"description":"How many users belong to the active organization, and how many of them were created inside `timeRangeDays`.","examples":[{"totalUsers":42,"recentUsers":3,"timeRangeDays":7}]},"UserStatsOutput":{"type":"object","properties":{"totalUsers":{"type":"number"},"recentUsers":{"type":"number"},"userGrowth":{"type":"array","items":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"users":{"type":"number"}},"required":["timestamp","users"],"additionalProperties":false}},"timeRangeDays":{"type":"number"}},"required":["totalUsers","recentUsers","userGrowth","timeRangeDays"],"additionalProperties":false,"description":"Organization user counts. `totalUsers` is every member, `recentUsers` is the number created inside `timeRangeDays`, and `userGrowth` is one point per day in that range. Timestamps are RFC 3339 instants in UTC.","examples":[{"totalUsers":42,"recentUsers":3,"userGrowth":[{"timestamp":"2026-03-05T00:00:00.000Z","users":40},{"timestamp":"2026-03-11T00:00:00.000Z","users":42}],"timeRangeDays":7}]},"UserReadOutput":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"name":{"type":"string","description":"Display name shown in the Console. Falls back to the email local part when the user has not set one.","examples":["Amara Okafor"]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"$ref":"#/components/schemas/UserRoleEncoded"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"nationalId":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"country":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"dob":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"residencyStatus":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus_1"},{"type":"null"}]},{"type":"null"}]},"createdAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"lastLoginAt":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},{"type":"null"}]},"participantId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the person participant that belongs to this user in the active organization. Use it on participant routes.","examples":["c0b8d4b0-3c5a-4b62-9a2e-2f0f6f4a5f10"]},"roles":{"$ref":"#/components/schemas/AccessControlRoles"},"rolesPending":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"isAdmin":{"anyOf":[{"anyOf":[{"type":"boolean"},{"type":"null"}]},{"type":"null"}]}},"required":["id","name","participantId","roles"],"additionalProperties":false,"description":"One organization member. `roles` reports the on-chain access-control roles held by the member's scoped executor on the active system. `rolesPending` is true while a role change is still waiting on the indexer. `isAdmin` is true when the user holds a system admin role. Read the participant custody-account route for ledger accounts.","examples":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"member","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z","participantId":"c0b8d4b0-3c5a-4b62-9a2e-2f0f6f4a5f10","roles":{"identityManager":true},"rolesPending":false,"isAdmin":false}]},"AccessControlRoles":{"type":"object","properties":{"addonManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"addonModule":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"addonRegistryModule":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"auditor":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimPolicyManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimIssuer":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"complianceManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"custodian":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"emergency":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"feedsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"fundsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"gasManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"governance":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"identityManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"identityRegistryModule":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"organisationIdentityManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"saleAdmin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"supplyManagement":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"systemManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"systemModule":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tokenFactoryModule":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tokenFactoryRegistryModule":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tokenManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trustedIssuersMetaRegistryModule":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false},"ResidencyStatus_1":{"type":"string","enum":["resident","non_resident","dual_resident","unknown"],"description":"Tax residency status"},"UserRoleEncoded":{"anyOf":[{"$ref":"#/components/schemas/UserRole_1"},{"type":"null"}]},"UserRole_1":{"type":"string","enum":["admin","owner","member"],"description":"User role in the system"},"UserListItem":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"name":{"type":"string","description":"Display name shown in the Console. Falls back to the email local part when the user has not set one.","examples":["Amara Okafor"]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"$ref":"#/components/schemas/UserRoleEncoded"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"nationalId":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"country":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"dob":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"residencyStatus":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus_1"},{"type":"null"}]},{"type":"null"}]},"createdAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"lastLoginAt":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},{"type":"null"}]},"participantId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the person participant that belongs to this user in the active organization. Use it on participant routes.","examples":["c0b8d4b0-3c5a-4b62-9a2e-2f0f6f4a5f10"]},"roles":{"$ref":"#/components/schemas/AccessControlRoles"},"rolesPending":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"isAdmin":{"anyOf":[{"anyOf":[{"type":"boolean"},{"type":"null"}]},{"type":"null"}]}},"required":["id","name","participantId","roles"],"additionalProperties":false,"description":"One organization member. `roles` reports the on-chain access-control roles held by the member's scoped executor on the active system. `rolesPending` is true while a role change is still waiting on the indexer. `isAdmin` is true when the user holds a system admin role. Read the participant custody-account route for ledger accounts.","examples":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"member","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z","participantId":"c0b8d4b0-3c5a-4b62-9a2e-2f0f6f4a5f10","roles":{"identityManager":true},"rolesPending":false,"isAdmin":false}]},"UserSearchOutput_1":{"type":"array","items":{"$ref":"#/components/schemas/UserSearchResult_1"},"description":"A short list of users whose profile or linked account matches the query.","examples":[[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","participantId":"participant-amara-okafor","name":"Amara Okafor","role":"member"}]]},"UserSearchResult_1":{"type":"object","properties":{"id":{"type":"string","description":"User identifier.","examples":["usr_01j8f3k2m4n5p6q7r8s9t0v1"]},"participantId":{"anyOf":[{"$ref":"#/components/schemas/ParticipantId_2"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name, or `null` when the user has not set one.","examples":["Ada Lovelace",null]},"role":{"$ref":"#/components/schemas/UserRoleEncoded"}},"required":["id","participantId","name"],"additionalProperties":false,"description":"One user match from organization search. Custody-account routes expose ledger accounts.","examples":[{"id":"usr_01j8f3k2m4n5p6q7r8s9t0v1","participantId":"pp_01j8f3k2m4n5p6q7r8s9t0v1","name":"Ada Lovelace","role":"admin"}]},"ParticipantId_2":{"type":"string","minLength":1,"description":"Person participant identifier used to read the user's custody accounts."},"UserMe":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the user, assigned by the platform as a UUID.","examples":["0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45"]},"name":{"type":"string","description":"Display name shown in the Console. Falls back to the email local part when the user has not set one.","examples":["Amara Okafor"]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"$ref":"#/components/schemas/UserRoleEncoded"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"nationalId":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"country":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"dob":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]},"residencyStatus":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus_1"},{"type":"null"}]},{"type":"null"}]},"createdAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"lastLoginAt":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},{"type":"null"}]},"verificationTypes":{"type":"array","items":{"$ref":"#/components/schemas/VerificationType"}},"onboardingState":{"type":"object","properties":{"wallet":{"type":"boolean"},"walletSecurity":{"type":"boolean"},"walletRecoveryCodes":{"type":"boolean"},"system":{"type":"boolean"},"systemSettings":{"type":"boolean"},"systemAssets":{"type":"boolean"},"systemAddons":{"type":"boolean"},"identitySetup":{"type":"boolean"}},"required":["wallet","walletSecurity","walletRecoveryCodes","system","systemSettings","systemAssets","systemAddons","identitySetup"],"additionalProperties":false,"description":"Which Console onboarding steps this user has finished. Each flag is independent, so a user can hold a wallet before the organization system exists.","examples":[{"wallet":true,"walletSecurity":true,"walletRecoveryCodes":true,"system":true,"systemSettings":true,"systemAssets":true,"systemAddons":true,"identitySetup":true}]},"remainingRecoveryCodes":{"anyOf":[{"type":"integer"},{"type":"null"}]},"hasRelevantAddons":{"type":"boolean"},"personalInfoCompleted":{"type":"boolean"},"isUserSecure":{"type":"boolean"},"systemAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}]},"baseCurrency":{"anyOf":[{"$ref":"#/components/schemas/FiatCurrency"},{"type":"null"}]},"onboardingCompletedAt":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},{"type":"null"}]},"organizationName":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]}},"required":["id","name","verificationTypes","onboardingState","hasRelevantAddons","personalInfoCompleted","isUserSecure","systemAddress","baseCurrency"],"additionalProperties":false,"description":"The authenticated user as the Console session sees them. `verificationTypes` lists the wallet verification methods already set up, and `onboardingState` reports which Console setup steps are finished. Read `/users/me/custody-accounts` for ledger accounts. `remainingRecoveryCodes` is omitted when the user has not confirmed a recovery-code set.","examples":[{"id":"0193fa5c-9c31-7a4d-b0e2-3f6c9d1a7b45","name":"Amara Okafor","email":"amara.okafor@northwind.example","role":"member","firstName":"Amara","lastName":"Okafor","nationalId":"NL-8842-1177","country":"NL","dob":"1988-04-12","residencyStatus":"resident","createdAt":"2026-03-04T09:12:41.000Z","lastLoginAt":"2026-03-11T16:02:08.000Z","verificationTypes":["PINCODE"],"onboardingState":{"wallet":true,"walletSecurity":true,"walletRecoveryCodes":true,"system":true,"systemSettings":true,"systemAssets":true,"systemAddons":true,"identitySetup":true},"remainingRecoveryCodes":8,"hasRelevantAddons":true,"personalInfoCompleted":true,"isUserSecure":true,"systemAddress":"0x9F4C1a2B3D5e6f708192a3B4c5D6e7f8091A2B3c","baseCurrency":"EUR","onboardingCompletedAt":"2026-03-11T16:02:08.000Z","organizationName":"Northwind Coffee"}]},"FiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"VerificationType":{"type":"string","enum":["OTP","PINCODE","SECRET_CODES"],"description":"Type of verification"},"KycDeleteOutput":{"type":"object","properties":{"userId":{"type":"string","minLength":1,"description":"Identifier of the user whose flattened KYC record was removed."}},"required":["userId"],"additionalProperties":false,"description":"Confirmation that the flattened KYC record for the named user is gone."},"KycUpsertOutput":{"type":"object","properties":{"changed":{"type":"boolean","description":"True when the write stored a different value than the one already held."},"currentVersion":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer"},"contentHash":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","number","contentHash","createdAt"],"additionalProperties":false},{"type":"null"}],"description":"The version that now holds the written fields, or null when no version exists yet."},"profile":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"dob":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"residencyStatus":{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}]},"nationalId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","userId","firstName","lastName","dob","country","residencyStatus","nationalId","createdAt","updatedAt"],"additionalProperties":false},{"type":"null"}],"description":"The stored profile after the write, or null when the write created no profile."}},"required":["changed","currentVersion","profile"],"additionalProperties":false,"description":"Whether the write changed stored fields, plus the resulting profile and current version."},"ResidencyStatus":{"type":"string","enum":["resident","non_resident","dual_resident","unknown"],"description":"Tax residency status"},"ISOCountryCodeNormalizedEncoded":{"type":"string"},"KycReadOutput":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Identifier of the KYC profile, assigned by the platform as a UUID."},"userId":{"type":"string","minLength":1,"description":"Identifier of the user this profile belongs to, assigned by the platform as a UUID."},"firstName":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Given name stored on the profile. Null when the field has not been supplied."},"lastName":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Family name stored on the profile. Null when the field has not been supplied."},"dob":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Date of birth stored on the profile. Null when the field has not been supplied."},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode_4"},{"type":"null"}],"description":"ISO 3166-1 alpha-2 country of nationality or residence. Null when the field has not been supplied."},"residencyStatus":{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}],"description":"Residency classification stored on the profile. Null when the field has not been supplied."},"nationalId":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"description":"National identifier stored on the profile. Null when the field has not been supplied."},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"contentHash":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hash of the approved identity fields when an approved version exists. Null when the profile has no approved version yet."}},"required":["id","userId","firstName","lastName","dob","country","residencyStatus","nationalId","createdAt","updatedAt","contentHash"],"additionalProperties":false,"description":"The flattened KYC fields stored for the named user, plus the approved content hash when one exists."},"ISOCountryCode_4":{"type":"string"},"KycListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Identifier of the KYC profile, assigned by the platform as a UUID."},"userId":{"type":"string","minLength":1,"description":"Identifier of the user this profile belongs to, assigned by the platform as a UUID."},"firstName":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Given name stored on the profile. Null when the field has not been supplied."},"lastName":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Family name stored on the profile. Null when the field has not been supplied."},"dob":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Date of birth stored on the profile. Null when the field has not been supplied."},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode_4"},{"type":"null"}],"description":"ISO 3166-1 alpha-2 country of nationality or residence. Null when the field has not been supplied."},"residencyStatus":{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}],"description":"Residency classification stored on the profile. Null when the field has not been supplied."},"nationalId":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"description":"National identifier stored on the profile. Null when the field has not been supplied."},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","userId","firstName","lastName","dob","country","residencyStatus","nationalId","createdAt","updatedAt"],"additionalProperties":false},"description":"KYC profiles on this page, in the requested order."},"total":{"type":"number","description":"Number of profiles that match the query, not just the ones on this page."},"limit":{"type":"number","description":"Page size that was applied to this response."},"offset":{"type":"number","description":"Number of matching profiles skipped before this page."}},"required":["items","total","limit","offset"],"additionalProperties":false,"description":"One page of flattened KYC profiles visible in the active organization, with the total match count."},"KycProfileVersionsCreateOutput":{"type":"object","properties":{"id":{"type":"string"},"versionNumber":{"type":"number"},"status":{"$ref":"#/components/schemas/KycVersionStatus"},"userId":{"type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"dob":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"residencyStatus":{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}]},"nationalId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"createdBy":{"type":"string"}},"required":["id","versionNumber","status","userId","firstName","lastName","dob","country","residencyStatus","nationalId","createdAt","createdBy"],"additionalProperties":false,"description":"The draft version this call created, including the identity fields copied into it."},"KycVersionStatus":{"type":"string","enum":["draft","submitted","under_review","approved","rejected"],"description":"KYC version workflow status"},"KycReviewOutcome":{"type":"string","enum":["approved","rejected","changes_requested"],"description":"Outcome of KYC version review"},"KycProfileVersionRequestUpdateOutput":{"type":"object","properties":{"version":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["under_review"]}},"required":["id","status"],"additionalProperties":false},"actionRequest":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["open"]},"reason":{"type":"string"},"requiredFields":{"type":"array","items":{"type":"string"}},"dueAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"requestedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","status","reason","requiredFields","dueAt","requestedAt"],"additionalProperties":false},"newDraft":{"type":"object","properties":{"id":{"type":"string"},"versionNumber":{"type":"number"},"status":{"type":"string","enum":["draft"]}},"required":["id","versionNumber","status"],"additionalProperties":false}},"required":["version","actionRequest"],"additionalProperties":false,"description":"The version still under review and the action request this call opened."},"KycProfileVersionRejectOutput":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["rejected"]},"reviewOutcome":{"type":"string","enum":["rejected"]},"rejectionReason":{"type":"string"},"reviewedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"reviewedBy":{"type":"string"}},"required":["id","status","reviewOutcome","rejectionReason","reviewedAt","reviewedBy"],"additionalProperties":false,"description":"The rejected version, with the recorded reason and reviewer."},"KycProfileVersionApproveOutput":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["approved"]},"reviewOutcome":{"type":"string","enum":["approved"]},"reviewedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"reviewedBy":{"type":"string"},"reviewNotes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status","reviewOutcome","reviewedAt","reviewedBy","reviewNotes"],"additionalProperties":false,"description":"The approved version, with the recorded review decision."},"KycProfileVersionSubmitOutput":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["under_review"]},"submittedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"submittedBy":{"type":"string"}},"required":["id","status","submittedAt","submittedBy"],"additionalProperties":false,"description":"The submitted version, with the submission time and the submitting participant."},"KycProfileVersionUpdateOutput":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"versionNumber":{"type":"number"},"status":{"$ref":"#/components/schemas/KycVersionStatus"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"dob":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"residencyStatus":{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}]},"nationalId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","userId","versionNumber","status","firstName","lastName","dob","country","residencyStatus","nationalId","createdAt","createdBy"],"additionalProperties":false,"description":"The draft version as it now stands after the field update."},"KycProfileVersionReadOutput":{"type":"object","properties":{"id":{"type":"string"},"versionNumber":{"type":"number"},"status":{"$ref":"#/components/schemas/KycVersionStatus"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"dob":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"residencyStatus":{"anyOf":[{"$ref":"#/components/schemas/ResidencyStatus"},{"type":"null"}]},"nationalId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"submittedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"submittedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"reviewedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reviewOutcome":{"anyOf":[{"$ref":"#/components/schemas/KycReviewOutcome"},{"type":"null"}]},"reviewNotes":{"anyOf":[{"type":"string"},{"type":"null"}]},"rejectionReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"documentsCount":{"type":"number"},"canEdit":{"type":"boolean"},"canSubmit":{"type":"boolean"},"canReview":{"type":"boolean"}},"required":["id","versionNumber","status","userId","firstName","lastName","dob","country","residencyStatus","nationalId","createdAt","createdBy","submittedAt","submittedBy","reviewedAt","reviewedBy","reviewOutcome","reviewNotes","rejectionReason","documentsCount","canEdit","canSubmit","canReview"],"additionalProperties":false,"description":"One KYC version with identity fields, submission and review trail, document count, and the flags that state what the calling participant does next."},"KycProfileReadOutput":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"status":{"$ref":"#/components/schemas/KycProfileStatus"},"hasPendingUpdate":{"type":"boolean"},"approvedVersion":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"versionNumber":{"type":"number"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"contentHash":{"anyOf":[{"type":"string"},{"type":"null"}]},"approvedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"approvedBy":{"type":"string"}},"required":["id","versionNumber","firstName","lastName","contentHash","approvedAt","approvedBy"],"additionalProperties":false},{"type":"null"}]},"latestVersion":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"versionNumber":{"type":"number"},"status":{"$ref":"#/components/schemas/KycVersionStatus"},"isDraft":{"type":"boolean"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","versionNumber","status","isDraft","createdAt"],"additionalProperties":false},{"type":"null"}]},"openActionRequestsCount":{"type":"number"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","userId","status","hasPendingUpdate","approvedVersion","latestVersion","openActionRequestsCount","createdAt","updatedAt"],"additionalProperties":false,"description":"The KYC profile of one user: review status, pending-update flag, approved version, latest version, and open action-request count."},"KycProfileStatus":{"type":"string","enum":["incomplete","submitted","under_review","approved","rejected","update_required"],"description":"Computed KYC profile status based on version workflow state"},"KycMimeType":{"type":"string","enum":["application/pdf","image/jpeg","image/png","image/webp"],"description":"MIME type for KYC document uploads"},"KycDocumentType":{"type":"string","enum":["passport","drivers_license","national_id","proof_of_address","other"],"description":"Type of KYC verification document"},"KycProfileVersionDocumentGetDownloadUrlOutput":{"type":"object","properties":{"downloadUrl":{"type":"string"},"fileName":{"type":"string"},"mimeType":{"type":"string"},"expiresAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["downloadUrl","fileName","mimeType","expiresAt"],"additionalProperties":false,"description":"A download link for the document, with its file name, media type, and link expiry."},"KycProfileVersionDocumentConfirmUploadOutput":{"type":"object","properties":{"id":{"type":"string"},"versionId":{"type":"string"},"documentType":{"$ref":"#/components/schemas/KycDocumentType"},"fileName":{"type":"string"},"fileSize":{"type":"number"},"mimeType":{"type":"string"},"uploadedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"uploadedBy":{"type":"string"}},"required":["id","versionId","documentType","fileName","fileSize","mimeType","uploadedAt","uploadedBy"],"additionalProperties":false,"description":"The stored document record after the upload is confirmed."},"KycActionRequestFulfillOutput":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["fulfilled"]},"fulfilledAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","status","fulfilledAt"],"additionalProperties":false,"description":"The closed action request, with the time the platform recorded."},"EthereumCompositeIdEncoded":{"type":"string","minLength":82,"maxLength":82,"pattern":"^0x[a-fA-F0-9]{80}$"},"BigDecimal_11":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["1250000.5"]},"BigDecimal_10":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["100.00"]},"TrustedIssuerMutationOutput":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the registry transaction that carried the change, as a 0x-prefixed 32-byte lowercase hex string. Empty when the mutation completed as an idempotent no-op without an on-chain write."},"issuerAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["txHash","issuerAddress"],"additionalProperties":false,"description":"The issuer address and the hash of the registry transaction that carried the change."},"TrustedIssuerDeleteBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"}},"additionalProperties":false,"description":"Wallet verification for removing a trusted issuer. Send `walletVerification` when the signing wallet is protected by a code."},"OptionalUserVerification_6":{"anyOf":[{"$ref":"#/components/schemas/UserVerification_6"},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification."},"UserVerification_6":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"TrustedIssuerTopic":{"type":"object","properties":{"id":{"type":"string","allOf":[{"description":"Stable identifier of this topic entry, derived from the topic scheme registry address of the active system and the topic identifier. Use it as an opaque key; the platform does not accept it as a request parameter."}]},"topicId":{"type":"string","allOf":[{"description":"Decimal topic identifier, the `uint256` keccak-256 hash of the topic name. The claim-topic routes take this value in the path."}]},"name":{"type":"string","allOf":[{"description":"Topic name registered in the topic scheme registry of the active system. Empty when the registry holds no name for the topic identifier."}]},"signature":{"type":"string","allOf":[{"description":"ABI signature of the claim data the topic carries, registered alongside the name. Empty when the registry holds no signature for the topic identifier."}]}},"required":["id","topicId","name","signature"],"additionalProperties":false},"TrustedIssuer_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}],"allOf":[{"description":"Wallet that operates the issuer identity, resolved from the participants of the active system. Null when the identity is removed or when no participant wallet is linked to it."}]},"claimTopics":{"type":"array","items":{"$ref":"#/components/schemas/TrustedIssuerTopic"},"allOf":[{"description":"Claim topics this issuer may attest to in the registry that holds the entry, with the name and signature resolved from the topic scheme registry."}]},"deployedInTransaction":{"$ref":"#/components/schemas/EthereumHashEncoded"},"isGlobal":{"type":"boolean","allOf":[{"description":"True when the entry comes from a parent registry in the registry chain rather than from the trusted issuers registry of the active system. The write routes act on the registry of the active system, so they do not change an entry that a parent registry holds."}]}},"required":["id","claimTopics","deployedInTransaction","isGlobal"],"additionalProperties":false,"description":"The trusted issuer resolved across the registry chain: identity address, operating wallet, claim topics it may attest to, and `isGlobal` when the entry is inherited. Read `claimTopics` to see which claims this issuer can sign. Write routes cannot change an inherited entry."},"TrustedIssuer":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}],"allOf":[{"description":"Wallet that operates the issuer identity, resolved from the participants of the active system. Null when the identity is removed or when no participant wallet is linked to it."}]},"claimTopics":{"type":"array","items":{"$ref":"#/components/schemas/TrustedIssuerTopic"},"allOf":[{"description":"Claim topics this issuer may attest to in the registry that holds the entry, with the name and signature resolved from the topic scheme registry."}]},"deployedInTransaction":{"$ref":"#/components/schemas/EthereumHashEncoded"},"isGlobal":{"type":"boolean","allOf":[{"description":"True when the entry comes from a parent registry in the registry chain rather than from the trusted issuers registry of the active system. The write routes act on the registry of the active system, so they do not change an entry that a parent registry holds."}]}},"required":["id","claimTopics","deployedInTransaction","isGlobal"],"additionalProperties":false,"description":"The trusted issuer: identity address in `id`, operating wallet in `account`, the claim topics it may attest to, the deployment transaction, and `isGlobal` when the entry is inherited from a parent registry. Read `claimTopics` to see which claims this issuer can sign. Write routes cannot change an inherited entry."},"TrustedIssuerClaimTopicIds":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Claim topics the issuer may attest to, as decimal topic identifiers. A topic identifier is the `uint256` keccak-256 hash of the topic name registered in the topic scheme registry of the active system. Send the complete set of at least one topic: the platform stores exactly these topics and drops any topic you leave out."},"IdentityRegistrationStatusOutput":{"type":"object","properties":{"status":{"type":"string","enum":["NO_SYSTEM","NO_IDENTITY","NOT_REGISTERED","PENDING","ACTIVE"],"description":"How far the wallet has progressed through identity registration. Under `NO_SYSTEM` the request resolved no organization system to register against. `NO_IDENTITY` says either that the request carried no wallet or that the wallet has no indexed identity contract, and with `NOT_REGISTERED` the identity exists while the identity registry holds no entry for it. `PENDING` reports an entry that is not active yet. `ACTIVE` reports a live registration."},"identityAddress":{"$ref":"#/components/schemas/EvmAddress"},"systemAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["status"],"additionalProperties":false,"description":"How far the wallet has progressed through identity registration, plus the identity and system addresses once they are known."},"OrganizationId":{"type":"string","minLength":1,"description":"Tenant organization identifier"},"IdentityMutationOutput":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"allOf":[{"$ref":"#/components/schemas/IdentityAccount"},{"description":"Account that owns the identity contract, or `null` when the indexed identity records no owning account."}]},"isContract":{"type":"boolean","allOf":[{"description":"Whether the owning account is a contract rather than an externally owned account."}]},"hasIdentity":{"type":"boolean","allOf":[{"description":"Whether the identity registry holds a registration record for this identity, in any state. Read `registered` to tell an active registration from one that is not active yet."}]},"registered":{"allOf":[{"$ref":"#/components/schemas/IdentityRegistration_3"},{"description":"Present only while the identity holds an active registry entry, in which case it carries the recorded country. The key is absent when the identity has no entry or its entry is not active yet."}]},"claims":{"allOf":[{"$ref":"#/components/schemas/IdentityClaims"},{"description":"Claims the identity holds that no issuer has revoked, ordered by the topic registry the platform prefers. Each entry reports whether the registry trusts its issuer for this read."}]}},"required":["id","account","isContract","hasIdentity","claims"],"additionalProperties":false,"description":"The indexed identity: contract address in `id`, owning account, whether a registry record exists (`hasIdentity`), the active country in `registered` when that record is live, and the non-revoked claims. Use `id` on claim, key, and registration routes. Use `registered` and `hasIdentity` to decide whether to register the identity or issue a claim."},"IdentityClaims":{"type":"array","items":{"$ref":"#/components/schemas/IdentityClaim_3"}},"IdentityClaim_3":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"signature":{"type":"string"},"revoked":{"type":"boolean"},"issuer":{"$ref":"#/components/schemas/ClaimIssuer_3"},"values":{"type":"array","items":{"$ref":"#/components/schemas/ClaimValue_3"}},"isTrusted":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","signature","revoked","issuer","values"],"additionalProperties":false},"ClaimValue_3":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false},"ClaimIssuer_3":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]}},"required":["id","account"],"additionalProperties":false},"IdentityRegistration_3":{"anyOf":[{"$ref":"#/components/schemas/IdentityRegistered_3"},{"$ref":"#/components/schemas/IdentityUnregistered_3"}],"description":"Registration state. An object with `isRegistered: true` is ACTIVE. The literal `false` means not registered."},"IdentityUnregistered_3":{"type":"boolean","enum":[false],"description":"`false` means the identity is not registered in this registry."},"IdentityRegistered_3":{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true],"description":"Always `true` on this arm. The identity is ACTIVE in the registry."},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode_4"},{"type":"null"}],"allOf":[{"description":"Country the registry records for the identity, as an ISO 3166-1 alpha-2 code, or `null` when the stored numeric code maps to no country."}]}},"required":["isRegistered","country"],"additionalProperties":false,"description":"Identity is registered and ACTIVE. `country` is the stored ISO alpha-2 code when one is set."},"IdentityAccount":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"IdentityRegisterPendingOutput":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"allOf":[{"$ref":"#/components/schemas/IdentityAccount"},{"description":"Account that owns the identity contract, or `null` when the indexed identity records no owning account."}]},"isContract":{"type":"boolean","allOf":[{"description":"Whether the owning account is a contract rather than an externally owned account."}]},"hasIdentity":{"type":"boolean","allOf":[{"description":"Whether the identity registry holds a registration record for this identity, in any state. Read `registered` to tell an active registration from one that is not active yet."}]},"registered":{"allOf":[{"$ref":"#/components/schemas/IdentityRegistration_3"},{"description":"Present only while the identity holds an active registry entry, in which case it carries the recorded country. The key is absent when the identity has no entry or its entry is not active yet."}]},"claims":{"allOf":[{"$ref":"#/components/schemas/IdentityClaims"},{"description":"Claims the identity holds that no issuer has revoked, ordered by the topic registry the platform prefers. Each entry reports whether the registry trusts its issuer for this read."}]}},"required":["id","account","isContract","hasIdentity","claims"],"additionalProperties":false,"description":"The indexed identity after the pending registration is recorded: contract address, owning account, registry flags, and non-revoked claims."},"IdentityStatus_2":{"type":"string","enum":["pending","registered"],"description":"On-chain identity registration status"},"IdentityReadOutput_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"allOf":[{"$ref":"#/components/schemas/IdentityAccount"},{"description":"Account that owns the identity contract, or `null` when the indexed identity records no owning account."}]},"isContract":{"type":"boolean","allOf":[{"description":"Whether the owning account is a contract rather than an externally owned account."}]},"hasIdentity":{"type":"boolean","allOf":[{"description":"Whether the identity registry holds a registration record for this identity, in any state. Read `registered` to tell an active registration from one that is not active yet."}]},"registered":{"allOf":[{"$ref":"#/components/schemas/IdentityRegistration_3"},{"description":"Present only while the identity holds an active registry entry, in which case it carries the recorded country. The key is absent when the identity has no entry or its entry is not active yet."}]},"claims":{"allOf":[{"$ref":"#/components/schemas/IdentityClaims"},{"description":"Claims the identity holds that no issuer has revoked, ordered by the topic registry the platform prefers. Each entry reports whether the registry trusts its issuer for this read."}]}},"required":["id","account","isContract","hasIdentity","claims"],"additionalProperties":false,"description":"The indexed identity of the authenticated session wallet: contract address in `id`, owning account, registration state, and non-revoked claims. Use this when the caller acts on its own identity and does not already know the wallet address."},"IdentitySearchOutput":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"allOf":[{"$ref":"#/components/schemas/IdentityAccount"},{"description":"Account that owns the identity contract, or `null` when the indexed identity records no owning account."}]},"isContract":{"type":"boolean","allOf":[{"description":"Whether the owning account is a contract rather than an externally owned account."}]},"hasIdentity":{"type":"boolean","allOf":[{"description":"Whether the identity registry holds a registration record for this identity, in any state. Read `registered` to tell an active registration from one that is not active yet."}]},"registered":{"allOf":[{"$ref":"#/components/schemas/IdentityRegistration_3"},{"description":"Present only while the identity holds an active registry entry, in which case it carries the recorded country. The key is absent when the identity has no entry or its entry is not active yet."}]}},"required":["id","account","isContract","hasIdentity"],"additionalProperties":false},{"type":"null"}],"description":"The matching identity without its claims, or null when no indexed identity matches the query."},"IdentityReadOutput_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"allOf":[{"$ref":"#/components/schemas/IdentityAccount"},{"description":"Account that owns the identity contract, or `null` when the indexed identity records no owning account."}]},"isContract":{"type":"boolean","allOf":[{"description":"Whether the owning account is a contract rather than an externally owned account."}]},"hasIdentity":{"type":"boolean","allOf":[{"description":"Whether the identity registry holds a registration record for this identity, in any state. Read `registered` to tell an active registration from one that is not active yet."}]},"registered":{"allOf":[{"$ref":"#/components/schemas/IdentityRegistration_3"},{"description":"Present only while the identity holds an active registry entry, in which case it carries the recorded country. The key is absent when the identity has no entry or its entry is not active yet."}]},"claims":{"allOf":[{"$ref":"#/components/schemas/IdentityClaims"},{"description":"Claims the identity holds that no issuer has revoked, ordered by the topic registry the platform prefers. Each entry reports whether the registry trusts its issuer for this read."}]}},"required":["id","account","isContract","hasIdentity","claims"],"additionalProperties":false,"description":"The indexed identity at this contract address: owning account, `hasIdentity`, the active country in `registered` when that record is live, and non-revoked claims. Use `registered` and `hasIdentity` to decide whether to register the identity or issue a claim."},"IdentityDeleteOutput":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the transaction that removed the registry entry."},"wallet":{"$ref":"#/components/schemas/EvmAddress"}},"required":["txHash","wallet"],"additionalProperties":false,"description":"The wallet whose registry entry was removed, and the transaction that removed it."},"IdentityReadOutput":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"allOf":[{"$ref":"#/components/schemas/IdentityAccount"},{"description":"Account that owns the identity contract, or `null` when the indexed identity records no owning account."}]},"isContract":{"type":"boolean","allOf":[{"description":"Whether the owning account is a contract rather than an externally owned account."}]},"hasIdentity":{"type":"boolean","allOf":[{"description":"Whether the identity registry holds a registration record for this identity, in any state. Read `registered` to tell an active registration from one that is not active yet."}]},"registered":{"allOf":[{"$ref":"#/components/schemas/IdentityRegistration_3"},{"description":"Present only while the identity holds an active registry entry, in which case it carries the recorded country. The key is absent when the identity has no entry or its entry is not active yet."}]},"claims":{"allOf":[{"$ref":"#/components/schemas/IdentityClaims"},{"description":"Claims the identity holds that no issuer has revoked, ordered by the topic registry the platform prefers. Each entry reports whether the registry trusts its issuer for this read."}]}},"required":["id","account","isContract","hasIdentity","claims"],"additionalProperties":false,"description":"The indexed identity linked to the wallet: contract address in `id`, owning account, registration country in `registered` when the registry entry is active, and non-revoked claims. Use `id` as the identity address on claim, key, and registration routes."},"ClaimRevokeOutput":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the transaction that removed the claim from the identity contract, as a 0x prefixed 32-byte hash. Use it to trace the revocation on a block explorer or against the claim event listing."},"success":{"type":"boolean","description":"Always `true` when the response carries revocation data, because the Platform API reports a failed revocation through an error status rather than through this field."},"claimId":{"type":"string","description":"Identifier of the claim that was removed, as a 0x prefixed 32-byte hash. It matches the `claimId` recorded against the identity in the claim event listing."}},"required":["txHash","success","claimId"],"additionalProperties":false,"description":"The revoked claim: `claimId` of the removed attestation, `txHash` of the remove transaction, and `success` true. List claim events for that identity until `ClaimRevoked` is indexed, or open `txHash` on a block explorer."},"ClaimRevokeInput":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"targetIdentityAddress":{"$ref":"#/components/schemas/EvmAddress"},"claimTopic":{"anyOf":[{"$ref":"#/components/schemas/ClaimTopic_1"},{"type":"string","minLength":1,"maxLength":100,"description":"Name of a custom claim topic, between 1 and 100 characters. The topic id is the keccak-256 hash of this name, so it must match the name registered in the topic scheme registry of the selected system exactly, including case."}],"description":"Name of the topic to revoke. Exactly one active claim must exist for it on the target identity, because this name selects the claim to remove."}},"required":["targetIdentityAddress","claimTopic"],"additionalProperties":false,"description":"Target identity and the topic whose active claim the Platform API removes. The name is either a registered platform topic or a custom one registered in the selected system."},"ClaimTopic_1":{"type":"string","enum":["knowYourCustomer","antiMoneyLaundering","knowYourTransaction","knowYourBusiness","qualifiedInstitutionalInvestor","professionalInvestor","accreditedInvestor","accreditedInvestorVerified","regulationS","issuerProspectusFiled","issuerProspectusExempt","issuerLicensed","issuerReportingCompliant","issuerJurisdiction","collateral","uniqueIdentifier","assetClassification","basePrice","assetIssuer","assetLocation","assetCoordinates","assetPhysicalDetails","documentHash","sanctionsScreening","issuerEventDetermination","instrumentStructure","contractIdentity","custom"],"description":"Type of identity claim"},"ClaimsIssueOutput":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the transaction that added the claim to the identity contract, as a 0x prefixed 32-byte hash. Use it to trace the claim on a block explorer or against the claim event listing."},"success":{"type":"boolean","description":"Always `true` when the response carries claim data, because the Platform API reports a failed issuance through an error status rather than through this field."},"claimTopic":{"type":"string","description":"Name of the topic the issued claim records. For a custom topic this carries the registered name rather than the literal `custom`."},"targetWallet":{"$ref":"#/components/schemas/EvmAddress"}},"required":["txHash","success","claimTopic","targetWallet"],"additionalProperties":false,"description":"The issued claim: `claimTopic`, the identity that received it in `targetWallet`, `txHash` of the add transaction, and `success` true. List claim events for that identity until `ClaimAdded` is indexed, or open `txHash` on a block explorer."},"ClaimsIssueInput":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"externalMessageAuthorization":{"$ref":"#/components/schemas/ExternalMessageAuthorization_1"},"targetIdentityAddress":{"$ref":"#/components/schemas/EvmAddress"},"claim":{"$ref":"#/components/schemas/ClaimData_1"}},"required":["targetIdentityAddress","claim"],"additionalProperties":false,"description":"Target identity and the claim to sign. The claim shape depends on its topic, and a `knowYourCustomer` claim carries the approved KYC content hash of the participant that owns the identity as 64 hexadecimal characters without a `0x` prefix."},"ClaimData_1":{"anyOf":[{"$ref":"#/components/schemas/InvestorClaimData_1"},{"$ref":"#/components/schemas/AssetClassificationClaimData_1"},{"$ref":"#/components/schemas/AssetIssuerClaimData_1"},{"$ref":"#/components/schemas/BasePriceClaimData_1"},{"$ref":"#/components/schemas/CollateralClaimData_1"},{"$ref":"#/components/schemas/ContractIdentityClaimData_1"},{"$ref":"#/components/schemas/IssuerJurisdictionClaimData_1"},{"$ref":"#/components/schemas/IssuerLicensedClaimData_1"},{"$ref":"#/components/schemas/IssuerProspectusExemptClaimData_1"},{"$ref":"#/components/schemas/IssuerProspectusFiledClaimData_1"},{"$ref":"#/components/schemas/IssuerReportingCompliantClaimData_1"},{"$ref":"#/components/schemas/UniqueIdentifierClaimData_1"},{"$ref":"#/components/schemas/AssetLocationClaimData_1"},{"$ref":"#/components/schemas/AssetCoordinatesClaimData_1"},{"$ref":"#/components/schemas/AssetPhysicalDetailsClaimData_1"},{"$ref":"#/components/schemas/DocumentHashClaimData_1"},{"$ref":"#/components/schemas/CustomClaimData_1"}],"description":"Claim payload keyed by `topic`. Investor topics carry a `data.claim` string. Asset and issuer topics carry typed fields. Custom topics add `topicName` and `signature`."},"CustomClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["custom"]},"topicName":{"type":"string","minLength":1,"maxLength":100,"description":"Custom topic name, 1 to 100 characters."},"signature":{"type":"string","description":"Issuer signature over the custom claim payload."},"data":{"type":"array","description":"ABI-encoded custom claim arguments. Treat as opaque unless the topic documents the tuple."}},"required":["topic","topicName","signature","data"],"additionalProperties":false,"description":"Custom topic claim with an explicit topic name and signature."},"DocumentHashClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["documentHash"]},"data":{"type":"object","properties":{"sha256Hash":{"type":"string","description":"SHA-256 digest of the document, hex-encoded."},"documentType":{"type":"string","description":"Document class, such as prospectus or appraisal."},"fileName":{"type":"string","description":"Original file name."}},"required":["sha256Hash","documentType","fileName"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Hash of an off-chain document attached to the asset."},"AssetPhysicalDetailsClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["assetPhysicalDetails"]},"data":{"type":"object","properties":{"propertyArea":{"type":"string","minLength":1,"pattern":"^\\d+$","description":"Property area as a positive integer string. Unit is defined by the issuer template."},"buildingYear":{"type":"string","minLength":1,"pattern":"^\\d+$","description":"Year the building was completed."},"numberOfUnits":{"type":"string","minLength":1,"pattern":"^\\d+$","description":"Number of units in the property."}},"required":["propertyArea","buildingYear","numberOfUnits"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Physical attributes of a real-estate asset."},"AssetCoordinatesClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["assetCoordinates"]},"data":{"type":"object","properties":{"latitude":{"type":"string","minLength":1,"pattern":"^-?\\d+(?:\\.\\d+)?$","description":"Latitude as a decimal string."},"longitude":{"type":"string","minLength":1,"pattern":"^-?\\d+(?:\\.\\d+)?$","description":"Longitude as a decimal string."}},"required":["latitude","longitude"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Geographic coordinates of a real-world asset."},"AssetLocationClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["assetLocation"]},"data":{"type":"object","properties":{"city":{"type":"string","description":"City of the underlying asset."},"districtCode":{"type":"string","description":"District or postal sector code."},"areaId":{"type":"string","description":"Local area or parcel identifier."}},"required":["city","districtCode","areaId"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Civic location of a real-world asset."},"UniqueIdentifierClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["uniqueIdentifier"]},"data":{"type":"object","properties":{"identifier":{"type":"string","description":"Stable unique identifier for the instrument, such as an ISIN."}},"required":["identifier"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Unique instrument identifier claim."},"IssuerReportingCompliantClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerReportingCompliant"]},"data":{"type":"object","properties":{"compliant":{"type":"boolean","description":"Whether the issuer currently meets reporting duties."},"lastUpdated":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["compliant","lastUpdated"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Issuer ongoing reporting status and the time it was last attested."},"IssuerProspectusFiledClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerProspectusFiled"]},"data":{"type":"object","properties":{"prospectusReference":{"type":"string","description":"Filing reference for the prospectus."}},"required":["prospectusReference"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"States that a prospectus has been filed."},"IssuerProspectusExemptClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerProspectusExempt"]},"data":{"type":"object","properties":{"exemptionReference":{"type":"string","description":"Legal reference for the prospectus exemption."}},"required":["exemptionReference"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"States that the offering relies on a prospectus exemption."},"IssuerLicensedClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerLicensed"]},"data":{"type":"object","properties":{"licenseType":{"type":"string","description":"License class granted to the issuer."},"licenseNumber":{"type":"string","description":"License number as issued by the regulator."},"jurisdiction":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"},"validUntil":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["licenseType","licenseNumber","jurisdiction","validUntil"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Issuer license details: type, number, jurisdiction, and expiry."},"IssuerJurisdictionClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerJurisdiction"]},"data":{"type":"object","properties":{"jurisdiction":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"}},"required":["jurisdiction"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Issuer country of jurisdiction."},"ContractIdentityClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["contractIdentity"]},"data":{"type":"object","properties":{"contractAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["contractAddress"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Links the claim to an identity contract address."},"CollateralClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["collateral"]},"data":{"type":"object","properties":{"amount":{"$ref":"#/components/schemas/AssetAmount"},"expiryTimestamp":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["amount","expiryTimestamp"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Collateral amount and expiry for a backed instrument."},"BasePriceClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["basePrice"]},"data":{"type":"object","properties":{"amount":{"$ref":"#/components/schemas/BigDecimal"},"currencyCode":{"$ref":"#/components/schemas/FiatCurrency_1"}},"required":["amount","currencyCode"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Unit price claim used for valuation."},"FiatCurrency_1":{"type":"string","pattern":"^[A-Z]{3}$"},"AssetIssuerClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["assetIssuer"]},"data":{"type":"object","properties":{"issuerAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["issuerAddress"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Names the issuer address for this asset."},"AssetClassificationClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["assetClassification"]},"data":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/AssetType_2"},"category":{"anyOf":[{"$ref":"#/components/schemas/EquityCategory_2"},{"$ref":"#/components/schemas/FundCategory_2"},{"$ref":"#/components/schemas/RealEstatePropertyUse_2"}]}},"required":["type"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Classifies the instrument. Equity, fund, and real-estate types require a matching `category`."},"RealEstatePropertyUse_2":{"type":"string","enum":["RESIDENTIAL","COMMERCIAL","INDUSTRIAL","AGRICULTURAL","INSTITUTIONAL","MIXED_USE","RETAIL","OFFICE","HOSPITALITY","HEALTHCARE","EDUCATIONAL","RELIGIOUS","RECREATIONAL","CULTURAL","STORAGE","PARKING","TRANSPORTATION","UTILITIES","GOVERNMENTAL","PUBLIC_SPACE","DEVELOPMENT","VACANT","UNAVAILABLE","PUBLIC_SERVICES","PUBLIC_FACILITIES_TRANSPORTATION","ANCIENT_URBAN_REGION","VACANT_LAND","PLANS_AND_SYMBOLS","MANSION_USE","OTHER"],"description":"Usage classification of property"},"FundCategory_2":{"type":"string","enum":["ACTIVIST","COMMODITY_TRADING","CONVERTIBLE_ARBITRAGE","CREDIT","CURRENCY_FX","DISTRESSED_DEBT","EMERGING_MARKETS","EQUITY_HEDGE","EVENT_DRIVEN","FIXED_INCOME_ARBITRAGE","FUND_OF_FUNDS","GLOBAL_MACRO","HIGH_FREQUENCY_TRADING","MANAGED_FUTURES_CTA","MARKET_NEUTRAL","MERGER_ARBITRAGE","MULTI_STRATEGY","PRIVATE_EQUITY","VENTURE_CAPITAL"],"description":"Category of investment fund"},"EquityCategory_2":{"type":"string","enum":["COMMON_EQUITY","VOTING_COMMON_STOCK","NON_VOTING_COMMON_STOCK","CUMULATIVE_PREFERRED_STOCK","NON_CUMULATIVE_PREFERRED_STOCK","CONVERTIBLE_PREFERRED_STOCK","REDEEMABLE_PREFERRED_STOCK","LARGE_CAP_EQUITY","MID_CAP_EQUITY","SMALL_CAP_EQUITY","MICRO_CAP_EQUITY","DOMESTIC_EQUITY","INTERNATIONAL_EQUITY","GLOBAL_EQUITY","EMERGING_MARKET_EQUITY","FRONTIER_MARKET_EQUITY","TECHNOLOGY","FINANCIALS","HEALTHCARE","ENERGY","CONSUMER_STAPLES","CONSUMER_DISCRETIONARY","INDUSTRIALS","MATERIALS","UTILITIES","COMMUNICATION_SERVICES","REAL_ESTATE","GROWTH_EQUITY","VALUE_EQUITY","BLEND_EQUITY","INCOME_EQUITY","VENTURE_CAPITAL","GROWTH_CAPITAL","LEVERAGED_BUYOUTS","MEZZANINE_FINANCING","DISTRESSED_EQUITY","RESTRICTED_STOCK","ESOP_SHARES","TRACKING_STOCKS","DUAL_CLASS_SHARES"],"description":"Category of equity"},"AssetType_2":{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal"],"description":"Type of financial asset"},"InvestorClaimData_1":{"type":"object","properties":{"topic":{"type":"string","enum":["knowYourCustomer","antiMoneyLaundering","knowYourTransaction","knowYourBusiness","qualifiedInstitutionalInvestor","professionalInvestor","accreditedInvestor","accreditedInvestorVerified","regulationS"],"description":"Investor-qualification topic this claim asserts."},"data":{"$ref":"#/components/schemas/InvestorClaimPayload_1"}},"required":["topic","data"],"additionalProperties":false,"description":"Investor qualification claim. `topic` names the check; `data.claim` is the issuer payload. `data.validUntil` optionally expires it."},"InvestorClaimPayload_1":{"type":"object","properties":{"claim":{"type":"string","description":"Issuer-supplied claim payload for this topic. Treat as opaque text unless the topic documents a format."},"validUntil":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["claim"],"additionalProperties":false},"ExternalMessageAuthorization_1":{"type":"object","properties":{"signature":{"$ref":"#/components/schemas/EthereumHexEncoded"}},"required":["signature"],"additionalProperties":false,"description":"External-wallet signature over the exact signing payload prepared by the Platform API."},"ClaimTopicDeleteOutput":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the confirmed transaction that carried the change, as a 0x-prefixed 32 byte lowercase hex string."},"name":{"type":"string","description":"Name registered for the claim topic. Names are unique within a single topic scheme registry."}},"required":["txHash","name"],"additionalProperties":false,"description":"The removed topic name and the hash of the transaction that removed it."},"ClaimTopicDeleteBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"}},"additionalProperties":false,"description":"Shared mutation body fields. `walletVerification` carries the step-up secret the signer must present before a chain write is queued."},"ClaimTopicUpdateOutput":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the confirmed transaction that carried the change, as a 0x-prefixed 32 byte lowercase hex string."},"name":{"type":"string","description":"Name registered for the claim topic. Names are unique within a single topic scheme registry."},"newSignature":{"type":"string","description":"Signature stored for the topic after the update, with the surrounding parentheses the platform adds. Compare it against the submitted type list to confirm the change landed."}},"required":["txHash","name","newSignature"],"additionalProperties":false,"description":"The topic name, the new stored signature, and the hash of the transaction that wrote it."},"ClaimTopicUpdateBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"signature":{"type":"string","description":"Solidity type list describing the claim data for this topic, written as a comma separated list without surrounding parentheses. Parameter names are optional. The platform wraps the list in parentheses before it registers the topic, so the stored signature reads `(uint256 amount, uint256 expiryTimestamp)`. Minimum length is 1 character.","minLength":1}},"required":["signature"],"additionalProperties":false,"description":"New claim data type list that replaces the one stored for the topic named in the path. Add `walletVerification` when the signing wallet requires a verification challenge."},"ClaimTopicCreateOutput":{"type":"object","properties":{"txHash":{"type":"string","description":"Hash of the confirmed transaction that carried the change, as a 0x-prefixed 32 byte lowercase hex string."},"name":{"type":"string","description":"Name registered for the claim topic. Names are unique within a single topic scheme registry."}},"required":["txHash","name"],"additionalProperties":false,"description":"The registered topic name and the hash of the transaction that stored it."},"ClaimTopicCreateInput":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_6"},"name":{"type":"string","description":"Name to register for the claim topic, 1 to 100 characters. The name is unique within the active system's topic scheme registry, and the platform rejects a name that is already registered.","minLength":1,"maxLength":100},"signature":{"type":"string","description":"Solidity type list describing the claim data for this topic, written as a comma separated list without surrounding parentheses. Parameter names are optional. The platform wraps the list in parentheses before it registers the topic, so the stored signature reads `(uint256 amount, uint256 expiryTimestamp)`. Minimum length is 1 character.","minLength":1}},"required":["name","signature"],"additionalProperties":false,"description":"Name and claim data type list for the new topic. Add `walletVerification` when the signing wallet requires a verification challenge."},"ClaimTopicV1Read":{"type":"object","properties":{"id":{"type":"string","description":"Stable resource identifier for the claim topic. The value concatenates the EIP-55 checksummed address of the registry that holds the topic with a hex encoding of its on-chain topic id, so the same topic keeps one identifier across pages and reads."},"name":{"type":"string","description":"Name registered for the claim topic. Names are unique within a single topic scheme registry."},"signature":{"type":"string","description":"Solidity type list of the claim data, stored with surrounding parentheses. Parameter names appear when the issuer registered them."},"topicId":{"type":"string","description":"On-chain topic id, serialized as a base 10 decimal string because the value exceeds the safe integer range. Sorting on this field compares the numeric value, not the string."},"trustedIssuers":{"type":"array","items":{"$ref":"#/components/schemas/ClaimTopicTrustedIssuer"},"description":"Issuers that can attest this topic today, ordered by issuer address ascending. The list omits revoked issuers, so an empty array means no issuer can attest the topic."}},"required":["id","name","signature","topicId","trustedIssuers"],"additionalProperties":false,"description":"The named claim topic and the issuers trusted to attest it today. Use `trustedIssuers` to pick a signing issuer before you issue a claim. An empty list means no issuer can sign this topic."},"ClaimTopicTrustedIssuer":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"revokedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"account":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false}},"required":["id","addedAt","revokedAt"],"additionalProperties":false,"description":"Issuer trusted to attest this claim topic. `id` is the EIP-55 checksummed address of the trusted issuer contract, and `addedAt` is the ISO 8601 UTC time the trusted issuer registry recorded the issuer. Because the response lists only issuers that are still trusted, `revokedAt` always carries the Unix epoch `1970-01-01T00:00:00.000Z`, and `account` is absent on this read path."},"ClaimTopicV1":{"type":"object","properties":{"id":{"type":"string","description":"Stable resource identifier for the claim topic. The value concatenates the EIP-55 checksummed address of the registry that holds the topic with a hex encoding of its on-chain topic id, so the same topic keeps one identifier across pages and reads."},"topicId":{"type":"string","description":"On-chain topic id, serialized as a base 10 decimal string because the value exceeds the safe integer range. Sorting on this field compares the numeric value, not the string."},"name":{"type":"string","description":"Name registered for the claim topic. Names are unique within a single topic scheme registry."},"signature":{"type":"string","description":"Solidity type list of the claim data, stored with surrounding parentheses. Parameter names appear when the issuer registered them."},"registry":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Topic scheme registry that holds this topic. For an inherited topic the address differs from the active system's own topic scheme registry."},"isGlobal":{"anyOf":[{"type":"boolean","description":"True when the active system inherits the topic from a registry other than the one it owns, false when the active system registered the topic itself. Defaults to false."},{"type":"null"}]}},"required":["id","topicId","name","signature","registry"],"additionalProperties":false,"description":"A claim topic the active system resolves: resource id, on-chain topic id, name, stored Solidity type list, holding registry, and whether it is inherited."},"RecoveryStatusOutput":{"type":"object","properties":{"phase":{"type":"string","enum":["creating-wallet","creating-identity","creating-smart-wallet","recovering-smart-wallet","recovering-identity","adding-management-key","disabling-old-wallets","registering-new-wallets","revoking-sessions","recovering-tokens","completed","completed-with-token-failures","failed"],"description":"Step the recovery is on. The first ten values are in progress and worth polling again. `completed` means every step and every token transfer succeeded. `completed-with-token-failures` means the identity moved but at least one token did not; read `tokenRecoveryFailures`. `failed` means the recovery stopped before finishing; read `error`. A recovery whose first progress record has not landed yet also reads `creating-wallet`.","examples":["recovering-tokens"]},"tokensRecovered":{"type":"number","description":"Token transfers that have finished. 0 before the transfer step starts.","examples":[2]},"totalTokens":{"type":"number","description":"Token transfers the recovery plans to run. 0 before the recovery has counted them.","examples":[3]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why the recovery stopped, set once `phase` is `failed`. Null while the recovery is still viable."},"newWallet":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Checksummed address of the wallet recovery created, or null until the recovery creates it."},"newIdentity":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Checksummed address of the identity recovery created, or null until the recovery creates it."},"tokenRecoveryFailures":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"$ref":"#/components/schemas/EvmAddress"},"holderAddress":{"$ref":"#/components/schemas/EvmAddress"},"reason":{"type":"string","enum":["TOKEN_PAUSED","MISSING_CUSTODIAN_ROLE","NO_TOKENS","RPC_ERROR","UNKNOWN"],"description":"Why one token did not move. `TOKEN_PAUSED`: transfers on the token are halted. `MISSING_CUSTODIAN_ROLE`: the signing wallet may not move holdings for this token. `NO_TOKENS`: the balance was gone by the time the transfer ran. `RPC_ERROR`: the chain call did not answer. `UNKNOWN`: the recovery recorded no recognised reason.","examples":["TOKEN_PAUSED"]},"message":{"type":"string","description":"Short description of the failure, phrased for display. Empty when the recovery recorded none.","examples":["Token transfers are paused"]},"rawError":{"type":"string","description":"Underlying error text as the recovery recorded it. Empty when the recovery recorded none."}},"required":["tokenAddress","holderAddress","reason","message","rawError"],"additionalProperties":false,"description":"One token that recovery could not move. `tokenAddress` is the token contract and `holderAddress` is the wallet the transfer read from. The rest of the recovery still applies; only this token stayed behind."},"description":"One entry per token that did not move. Empty while no transfer has failed."}},"required":["phase","tokensRecovered","totalTokens","error","newWallet","newIdentity","tokenRecoveryFailures"],"additionalProperties":false,"description":"Live progress of one user's recovery. Every field degrades instead of failing, so a recovery that has published no progress yet still reads back. Poll until `phase` is `completed`, `completed-with-token-failures`, or `failed`.","examples":[{"phase":"recovering-tokens","tokensRecovered":2,"totalTokens":3,"error":null,"newWallet":"0x4D2c8B71Fa03E59d6c8a1b7e2f4d9c0356Ab8E17","newIdentity":"0x2f8b1c4D7e0a9536B8C2D1F4E7a0b3c65D9e8f21","tokenRecoveryFailures":[]}]},"UserId":{"type":"string","minLength":1,"description":"Identifier of the user whose access is being recovered. The user must belong to the caller's active organization.","examples":["3f9c1b7e5a2d4068"]},"RecoveryExecuteOutput":{"type":"object","properties":{"success":{"type":"boolean","description":"True when the recovery workflow reached a terminal state without failing.","examples":[true]}},"required":["success"],"additionalProperties":false,"description":"Outcome of a recovery that finished inside the request's wait window.","examples":[{"success":true}]},"UserVerification_5":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false,"description":"Verification the caller's own wallet requires before it signs. Send it when the caller's wallet is protected by a code. `verificationType` defaults to `PINCODE` when omitted."},"RecoveryPreviewOutput":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the recovery target, echoed back from the request.","examples":["3f9c1b7e5a2d4068"]},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email address on the user record, or null when the record carries none."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name on the user record, or null when the record carries none."}},"required":["id","email","name"],"additionalProperties":false,"description":"The recovery target, resolved inside the caller's active organization."},"lostWallet":{"$ref":"#/components/schemas/EvmAddress"},"identity":{"type":"object","properties":{"id":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Address of the deployed identity contract, or null when the user has no identity deployed."},"status":{"anyOf":[{"$ref":"#/components/schemas/IdentityStatus_1"},{"type":"null"}],"description":"Registration state of the identity, or null when the identity is not registered in the system yet. `registered` means the registry lists the identity as active; `pending` means the registry lists it but has not activated it."},"isMarkedAsLost":{"type":"boolean","description":"True once the platform has flagged the wallet as lost. A wallet already flagged as lost blocks a further recovery.","examples":[false]}},"required":["id","status","isMarkedAsLost"],"additionalProperties":false,"description":"State of the on-chain identity that recovery moves to the new wallet."},"tokenBalances":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"$ref":"#/components/schemas/EvmAddress"},"tokenName":{"type":"string","description":"Token name published by the token contract. Empty when the contract publishes no name.","examples":["Euro Deposit"]},"tokenSymbol":{"type":"string","description":"Token symbol published by the token contract. Empty when the contract publishes no symbol.","examples":["EURD"]},"balance":{"$ref":"#/components/schemas/BigDecimal"},"balanceExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"decimals":{"type":"number","description":"Decimal places the token uses to convert base units into display units. 18 when the token publishes no precision.","examples":[18]}},"required":["tokenAddress","tokenName","tokenSymbol","balance","decimals"],"additionalProperties":false,"description":"One token position that recovery moves off the lost wallet. `tokenAddress` is the checksummed address of the token contract. `balance` is the holding in display units and `balanceExact` is the same holding as a base-unit integer. Only positive holdings appear here."},"description":"Every positive token holding on the lost wallet that recovery moves. Empty when it holds none."},"canRecover":{"type":"boolean","description":"True only when `blockingReasons` is empty. False means a submission fails until the reasons clear.","examples":[true]},"blockingReasons":{"type":"array","items":{"type":"string","description":"One condition that prevents recovery, phrased for display.","examples":["User does not have an identity contract deployed"]},"description":"Conditions that currently prevent recovery. Empty when nothing blocks it."}},"required":["user","lostWallet","identity","tokenBalances","canRecover","blockingReasons"],"additionalProperties":false,"description":"What a recovery would move for one user, and what stops it today. `lostWallet` is the checksummed address the platform treats as lost. Reading a preview changes nothing.","examples":[{"user":{"id":"3f9c1b7e5a2d4068","email":"treasury@northwind.example","name":"Amara Okafor"},"lostWallet":"0x9A3f7c21B45e08D6cF1B2A4e5d7f8C0913a6B2d4","identity":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","status":"registered","isMarkedAsLost":false},"tokenBalances":[{"tokenAddress":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenName":"Euro Deposit","tokenSymbol":"EURD","balance":"1250.5","balanceExact":"1250500000000000000000","decimals":18}],"canRecover":true,"blockingReasons":[]}]},"IdentityStatus_1":{"type":"string","enum":["pending","registered"],"description":"On-chain identity registration status"},"ContactsSearchOutput_1":{"type":"array","items":{"$ref":"#/components/schemas/ContactSearchResult_1"},"description":"A short list of contacts whose name or wallet matches the query, best-match first.","examples":[[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]]},"ContactSearchResult_1":{"type":"object","properties":{"id":{"type":"string","description":"Contact identifier.","examples":["cnt_01j8f3k2m4n5p6q7r8s9t0v1"]},"name":{"type":"string","description":"Display name stored on the contact.","examples":["Northwind Treasury"]},"wallet":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id","name","wallet"],"additionalProperties":false,"description":"One contact match from organization search. `wallet` is the address you can send to.","examples":[{"id":"cnt_01j8f3k2m4n5p6q7r8s9t0v1","name":"Northwind Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"ContactsDeleteOutput":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Always `true` when the contact was removed.","examples":[true]}},"required":["success"],"additionalProperties":false,"description":"Confirmation that the named contact was removed from the authenticated user's address book.","examples":[{"success":true}]},"Contact_1":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the contact, assigned by the platform as a UUID.","examples":["7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41"]},"name":{"type":"string","description":"Name the owner gave the contact. Between 1 and 120 characters after surrounding whitespace is trimmed.","examples":["Northwind Coffee Treasury"]},"wallet":{"$ref":"#/components/schemas/EvmAddress"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","name","wallet","createdAt","updatedAt"],"additionalProperties":false,"description":"One address book entry. `wallet` is an EVM address in EIP-55 checksummed form, and `createdAt` and `updatedAt` are RFC 3339 timestamps in UTC.","examples":[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z"}]},"ContactsListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Contact"},"description":"Contacts on this page, in the requested order."},"total":{"type":"number","description":"Number of contacts that match the query, not just the ones on this page.","examples":[2]},"limit":{"type":"number","description":"Page size that was applied to this response.","examples":[20]},"offset":{"type":"number","description":"Number of matching contacts skipped before this page.","examples":[0]}},"required":["items","total","offset"],"additionalProperties":false,"description":"One page of contacts that belong to the authenticated user, with the total match count.","examples":[{"items":[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z"}],"total":1,"limit":20,"offset":0}]},"Contact":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the contact, assigned by the platform as a UUID.","examples":["7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41"]},"name":{"type":"string","description":"Name the owner gave the contact. Between 1 and 120 characters after surrounding whitespace is trimmed.","examples":["Northwind Coffee Treasury"]},"wallet":{"$ref":"#/components/schemas/EvmAddress"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","name","wallet","createdAt","updatedAt"],"additionalProperties":false,"description":"One address book entry. `wallet` is an EVM address in EIP-55 checksummed form, and `createdAt` and `updatedAt` are RFC 3339 timestamps in UTC.","examples":[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","name":"Northwind Coffee Treasury","wallet":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","createdAt":"2026-03-04T09:12:41.000Z","updatedAt":"2026-03-11T16:02:08.000Z"}]},"TransactionReadOutput":{"type":"object","properties":{"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"},"from":{"$ref":"#/components/schemas/EvmAddress"},"receipt":{"anyOf":[{"$ref":"#/components/schemas/TransactionReceipt"},{"type":"null"}],"description":"Mined receipt, or null while the transaction is still pending."}},"required":["transactionHash","from","receipt"],"additionalProperties":false,"description":"Blockchain transaction named by hash on the selected chain. A stored receipt from a queue record the caller owns is returned first. Otherwise the node is queried. `receipt` is null while the transaction is still pending."},"TransactionReceipt":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Reverted"],"description":"Whether execution succeeded or reverted after the transaction was mined."},"revertReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Raw revert text when execution reverted. Null on success or when the node did not return a reason."},"revertReasonDecoded":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Decoded revert text when the platform could interpret the raw reason. Null when no decoded text exists."},"blockNumber":{"type":"string","description":"Decimal block number that included the transaction."},"blockHash":{"type":"string","description":"Hash of the block that included the transaction."},"gasUsed":{"type":"string","description":"Gas units consumed by the mined transaction, as a decimal string."},"effectiveGasPrice":{"type":"string","description":"Effective gas price paid, in wei, as a decimal string."},"from":{"$ref":"#/components/schemas/EvmAddress"},"to":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Recipient or called contract. Null for a contract-creation transaction."}},"required":["status","revertReason","revertReasonDecoded","blockNumber","blockHash","gasUsed","effectiveGasPrice","from","to"],"additionalProperties":false,"description":"Mined receipt for a blockchain transaction. Present only after inclusion. `status` is Success or Reverted. Repeat the parent read while this object is still null."},"Token_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"$ref":"#/components/schemas/EvmAddress"},"complianceContract":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The per-token SMARTCompliance contract address that hosts this token's compliance modules. Null when not yet indexed."},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The most recently indexed per-token identity registry contract that controls which addresses are eligible to hold this token."},"type":{"$ref":"#/components/schemas/AssetTypeOrSlug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"The name of the token"},"symbol":{"type":"string","description":"The symbol of the token"},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned URL for the token's brand logo, or null when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal"},"basePriceCurrencyCode":{"anyOf":[{"$ref":"#/components/schemas/FiatCurrency"},{"type":"null"}],"description":"The base price currency code of the token"},"totalSupply":{"$ref":"#/components/schemas/BigDecimal"},"totalSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"extensions":{"$ref":"#/components/schemas/AssetExtensionArray_1"},"implementsERC3643":{"type":"boolean","description":"Whether the token implements ERC3643"},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, null = unknown."},"implementsSMART":{"type":"boolean","description":"Whether the token implements SMART"},"identity":{"$ref":"#/components/schemas/TokenIdentity_2"},"pausable":{"$ref":"#/components/schemas/TokenPausable"},"collateral":{"anyOf":[{"type":"object","properties":{"collateral":{"anyOf":[{"$ref":"#/components/schemas/BigDecimal"},{"type":"null"}]},"collateralExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"expiryTimestamp":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"The expiry timestamp of the collateral"}},"required":["expiryTimestamp"],"additionalProperties":false},{"type":"null"}],"description":"The collateral of the token"},"capped":{"anyOf":[{"type":"object","properties":{"cap":{"$ref":"#/components/schemas/BigDecimal"},"capExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["cap","capExact"],"additionalProperties":false},{"type":"null"}],"description":"The max supply of the token"},"createdBy":{"$ref":"#/components/schemas/AddressRef_2"},"redeemable":{"anyOf":[{"type":"object","properties":{"redeemedAmount":{"$ref":"#/components/schemas/BigDecimal"},"redeemedAmountExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["redeemedAmount"],"additionalProperties":false},{"type":"null"}],"description":"The amount of tokens redeemed"},"yield":{"anyOf":[{"type":"object","properties":{"schedule":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"denominationAsset":{"$ref":"#/components/schemas/RuntimeDenominationAsset_1"}},"required":["id","denominationAsset"],"additionalProperties":false},{"type":"null"}]}},"required":["schedule"],"additionalProperties":false},{"type":"null"}],"description":"The yield of the token"},"bond":{"anyOf":[{"type":"object","properties":{"faceValue":{"$ref":"#/components/schemas/BigDecimal"},"faceValueExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"isMatured":{"type":"boolean","description":"Whether the bond is matured"},"maturityDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalRedeemed":{"$ref":"#/components/schemas/BigDecimal"},"totalRedeemedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"denominationAsset":{"$ref":"#/components/schemas/RuntimeDenominationAsset_1"}},"required":["faceValue","faceValueExact","isMatured","maturityDate","totalRedeemed","totalRedeemedExact","denominationAsset"],"additionalProperties":false},{"type":"null"}],"description":"The bond of the token"},"fund":{"anyOf":[{"type":"object","properties":{"managementFeeBps":{"$ref":"#/components/schemas/BigDecimal"}},"required":["managementFeeBps"],"additionalProperties":false},{"type":"null"}],"description":"The fund of the token"},"accessControl":{"$ref":"#/components/schemas/AccessControl_3"},"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"type":"object","properties":{"typeId":{"$ref":"#/components/schemas/ComplianceTypeId_2"}},"required":["typeId"],"additionalProperties":false}},"required":["id","complianceModule"],"additionalProperties":false},"description":"Enabled compliance modules for this token"},"userPermissions":{"type":"object","properties":{"roles":{"type":"object","properties":{"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"custodian":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"emergency":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"fundsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"governance":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"saleAdmin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"supplyManagement":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false,"description":"The roles of the user for the token"},"actions":{"$ref":"#/components/schemas/TokenPermissionActions_2"}},"required":["roles","actions"],"additionalProperties":false,"description":"The permissions of the user for the token"},"stats":{"anyOf":[{"type":"object","properties":{"balancesCount":{"type":"number","description":"The number of accounts holding this token"},"totalValueInBaseCurrency":{"$ref":"#/components/schemas/BigDecimal"},"totalBurned":{"$ref":"#/components/schemas/BigDecimal"},"totalBurnedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["balancesCount","totalValueInBaseCurrency","totalBurned","totalBurnedExact"],"additionalProperties":false},{"type":"null"}],"description":"The stats of the token"}},"required":["id","tokenFactory","complianceContract","identityRegistry","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","extensions","implementsERC3643","smartInterface","implementsSMART","pausable","collateral","capped","createdBy","redeemable","yield","bond","fund","complianceModuleConfigs","stats"],"additionalProperties":false,"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed."},"TokenPermissionActions_2":{"type":"object","properties":{"burn":{"type":"boolean"},"grantRole":{"type":"boolean"},"grantRoleByParticipant":{"type":"boolean"},"revokeRole":{"type":"boolean"},"revokeRoleByParticipant":{"type":"boolean"},"mint":{"type":"boolean"},"pause":{"type":"boolean"},"addComplianceModule":{"type":"boolean"},"approve":{"type":"boolean"},"forcedRecover":{"type":"boolean"},"freezeAddress":{"type":"boolean"},"recoverERC20":{"type":"boolean"},"recoverTokens":{"type":"boolean"},"redeem":{"type":"boolean"},"mature":{"type":"boolean"},"removeComplianceModule":{"type":"boolean"},"setCap":{"type":"boolean"},"setComplianceModuleParams":{"type":"boolean"},"setYieldSchedule":{"type":"boolean"},"topUpDenominationAsset":{"type":"boolean"},"withdrawDenominationAsset":{"type":"boolean"},"transfer":{"type":"boolean"},"forcedTransfer":{"type":"boolean"},"unpause":{"type":"boolean"},"updateCollateral":{"type":"boolean"},"freezePartial":{"type":"boolean"},"unfreezePartial":{"type":"boolean"},"claimIssue":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"setMetadata":{"type":"boolean"},"removeMetadata":{"type":"boolean"},"setAumFeeBps":{"type":"boolean"},"setAumFeeRecipient":{"type":"boolean"},"approveTransfer":{"type":"boolean"},"revokeTransferApproval":{"type":"boolean"},"collectAumFee":{"type":"boolean"},"freezeAumFeeRate":{"type":"boolean"},"claimYield":{"type":"boolean"},"setYieldTreasury":{"type":"boolean"},"matureEarly":{"type":"boolean"},"setMaturityTreasury":{"type":"boolean"},"topUpMaturityTreasury":{"type":"boolean"},"topUpYieldTreasury":{"type":"boolean"},"topUpBondDenomination":{"type":"boolean"},"setTransactionFeeRates":{"type":"boolean"},"setTransactionFeeRecipient":{"type":"boolean"},"freezeTransactionFeeRates":{"type":"boolean"},"setExternalTransactionFees":{"type":"boolean"},"setExternalTransactionFeeRecipient":{"type":"boolean"},"setExternalTransactionFeeToken":{"type":"boolean"},"freezeExternalTransactionFees":{"type":"boolean"},"setTransactionFeeAccountingRates":{"type":"boolean"},"setTransactionFeeAccountingRecipient":{"type":"boolean"},"freezeTransactionFeeAccountingRates":{"type":"boolean"},"reconcileFees":{"type":"boolean"},"setFeeExemption":{"type":"boolean"},"delegate":{"type":"boolean"},"delegateBySig":{"type":"boolean"},"permit":{"type":"boolean"},"publishTrigger":{"type":"boolean"},"disableTrigger":{"type":"boolean"},"setConversionWindow":{"type":"boolean"},"convert":{"type":"boolean"},"forceConvert":{"type":"boolean"},"addAuthorizedConverter":{"type":"boolean"},"removeAuthorizedConverter":{"type":"boolean"},"addHoldReserver":{"type":"boolean"},"removeHoldReserver":{"type":"boolean"},"setPrice":{"type":"boolean"},"featureAttach":{"type":"boolean"},"featureDetach":{"type":"boolean"},"featureRotate":{"type":"boolean"}},"required":["burn","grantRole","grantRoleByParticipant","revokeRole","revokeRoleByParticipant","mint","pause","addComplianceModule","approve","forcedRecover","freezeAddress","recoverERC20","recoverTokens","redeem","mature","removeComplianceModule","setCap","setComplianceModuleParams","setYieldSchedule","topUpDenominationAsset","withdrawDenominationAsset","transfer","forcedTransfer","unpause","updateCollateral","freezePartial","unfreezePartial","claimIssue","claimRevoke","setMetadata","removeMetadata","setAumFeeBps","setAumFeeRecipient","approveTransfer","revokeTransferApproval","collectAumFee","freezeAumFeeRate","claimYield","setYieldTreasury","matureEarly","setMaturityTreasury","topUpMaturityTreasury","topUpYieldTreasury","topUpBondDenomination","setTransactionFeeRates","setTransactionFeeRecipient","freezeTransactionFeeRates","setExternalTransactionFees","setExternalTransactionFeeRecipient","setExternalTransactionFeeToken","freezeExternalTransactionFees","setTransactionFeeAccountingRates","setTransactionFeeAccountingRecipient","freezeTransactionFeeAccountingRates","reconcileFees","setFeeExemption","delegate","delegateBySig","permit","publishTrigger","disableTrigger","setConversionWindow","convert","forceConvert","addAuthorizedConverter","removeAuthorizedConverter","addHoldReserver","removeHoldReserver","setPrice","featureAttach","featureDetach","featureRotate"],"additionalProperties":false,"description":"The actions on the token the user is allowed to execute"},"ComplianceTypeId_2":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"},"AccessControl_3":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"addonRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"admin":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"auditor":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"claimPolicyManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"claimIssuer":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"complianceManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"custodian":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"emergency":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"feedsManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"fundsManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"gasManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"governance":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"identityManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"identityRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"organisationIdentityManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"saleAdmin":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"supplyManagement":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"systemManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"systemModule":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"tokenFactoryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"tokenFactoryRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"tokenManager":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"trustedIssuersMetaRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_3"},"addonManager":{"anyOf":[{"$ref":"#/components/schemas/AccessControlAccountArray_3"},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"$ref":"#/components/schemas/AccessControlAccountArray_3"},{"type":"null"}]},"roleAdmins":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AccessControlRoleAdmin_3"}},{"type":"null"}]}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false,"description":"The access control of the token"},"AccessControlRoleAdmin_3":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"$ref":"#/components/schemas/AccessControlRole_3"},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"$ref":"#/components/schemas/AccessControlRole_3"}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false},"AccessControlRole_3":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"AccessControlAccountArray_3":{"type":"array","items":{"$ref":"#/components/schemas/AccessControlAccount_5"}},"AccessControlAccount_5":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false},"RuntimeDenominationAsset_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset used to denominate bond face value or yield payments."},"AssetSymbol_3":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Trading symbol for the asset","examples":["ETH","BTC","USDC","AAPL"]},"AddressRef_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"The user who created the token"},"TokenPausable":{"type":"object","properties":{"paused":{"type":"boolean","description":"Whether transfers and most writes are paused on this token.","examples":[false,true]}},"required":["paused"],"additionalProperties":false,"description":"Pause state of the token. When `paused` is true, holders cannot transfer until an admin unpauses.","examples":[{"paused":false}]},"TokenIdentity_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"isContract":{"type":"boolean"},"registered":{"$ref":"#/components/schemas/IdentityRegistration_2"},"claims":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/IdentityClaim_2"}},{"type":"null"}]}},"required":["id","account","isContract"],"additionalProperties":false,"description":"Identity associated with this token"},"IdentityClaim_2":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"signature":{"type":"string"},"revoked":{"type":"boolean"},"issuer":{"$ref":"#/components/schemas/ClaimIssuer_2"},"values":{"type":"array","items":{"$ref":"#/components/schemas/ClaimValue_2"}},"isTrusted":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","signature","revoked","issuer","values"],"additionalProperties":false},"ClaimValue_2":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false},"ClaimIssuer_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]}},"required":["id","account"],"additionalProperties":false},"IdentityRegistration_2":{"anyOf":[{"$ref":"#/components/schemas/IdentityRegistered_2"},{"$ref":"#/components/schemas/IdentityUnregistered_2"}],"description":"Registration state. An object with `isRegistered: true` is ACTIVE. The literal `false` means not registered."},"IdentityUnregistered_2":{"type":"boolean","enum":[false],"description":"`false` means the identity is not registered in this registry."},"IdentityRegistered_2":{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true],"description":"Always `true` on this arm. The identity is ACTIVE in the registry."},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode_3"},{"type":"null"}],"allOf":[{"description":"Country the registry records for the identity, as an ISO 3166-1 alpha-2 code, or `null` when the stored numeric code maps to no country."}]}},"required":["isRegistered","country"],"additionalProperties":false,"description":"Identity is registered and ACTIVE. `country` is the stored ISO alpha-2 code when one is set."},"ISOCountryCode_3":{"type":"string"},"AssetExtensionArray_1":{"type":"array","items":{"$ref":"#/components/schemas/AssetExtension"},"description":"The extensions of the token"},"AssetExtension":{"type":"string","enum":["ACCESS_MANAGED","BOND","BURNABLE","CAPPED","COLLATERAL","CONFIGURABLE","CUSTODIAN","FUND","HISTORICAL_BALANCES","METADATA","PAUSABLE","REDEEMABLE","YIELD"],"description":"Token extension capability"},"AssetTypeOrSlug":{"anyOf":[{"$ref":"#/components/schemas/AssetType"},{"$ref":"#/components/schemas/AssetTypeTemplateSlug"}],"description":"Asset type: known system type or custom template slug"},"AssetTypeTemplateSlug":{"type":"string","minLength":1,"description":"Custom asset type template slug"},"AssetType":{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal"],"description":"Type of financial asset"},"OptionalUserVerification_5":{"anyOf":[{"$ref":"#/components/schemas/UserVerification_4"},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"UserVerification_4":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"TokenDocumentDownloadOutput":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Short-lived URL that returns the file bytes. Request a new URL after `expiresAt`."},"fileName":{"type":"string","description":"Original file name to present to the caller.","examples":["northwind-series-a-prospectus.pdf"]},"mimeType":{"type":"string","description":"MIME type of the file.","examples":["application/pdf"]},"expiresAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["downloadUrl","fileName","mimeType","expiresAt"],"additionalProperties":false,"description":"Short-lived download URL for one document the caller can access. The URL expires; request a new one instead of retrying an expired URL.","examples":[{"downloadUrl":"https://files.example.com/documents/northwind-series-a-prospectus.pdf?expires=1741705028","fileName":"northwind-series-a-prospectus.pdf","mimeType":"application/pdf","expiresAt":"2026-03-11T16:17:08.000Z"}]},"TokenDocumentListV1Output":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/TokenDocumentListV1Item"},"description":"Document metadata rows. This list does not include file bytes."},"total":{"type":"number","description":"Number of matching documents, including those not returned in `items`.","examples":[1]}},"required":["items","total"],"additionalProperties":false,"description":"Documents attached to the token. The list is indexed metadata only. Request a download URL when you need the file.","examples":[{"items":[{"id":"7f1c2b90-3f4a-4b6f-9a1e-5c8d0e2f6a41","tokenAddress":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","documentType":"prospectus","visibility":"holders","groupId":"a1b2c3d4-5e6f-7081-92a3-b4c5d6e7f809","versionNumber":1,"isLatest":true,"fileName":"northwind-series-a-prospectus.pdf","fileSize":184320,"mimeType":"application/pdf","title":"Series A prospectus","description":"Offering memorandum for the Northwind Coffee Series A bond.","uploadedAt":"2026-03-04T09:12:41.000Z","fileHash":"0x4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a","uploadedBy":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}],"total":1}]},"TokenDocumentListV1Item":{"type":"object","properties":{"id":{"type":"string","description":"Stable identifier of this document version."},"tokenAddress":{"type":"string","description":"Token this document is attached to."},"documentType":{"$ref":"#/components/schemas/TokenDocumentType"},"visibility":{"$ref":"#/components/schemas/TokenDocumentVisibility"},"groupId":{"type":"string","description":"Document group this version belongs to. Versions of the same file share one group.","examples":["doc_01j8f3k2m4n5p6q7r8s9t0v1"]},"versionNumber":{"type":"number","description":"Monotonic version within the group. Starts at 1.","examples":[1,2]},"isLatest":{"type":"boolean","description":"Whether this is the current version in the group.","examples":[true,false]},"fileName":{"type":"string","description":"Stored file name, including extension.","examples":["acme-growth-bond-prospectus.pdf"]},"fileSize":{"type":"number","description":"Stored file size in bytes.","examples":[248832]},"mimeType":{"type":"string","description":"Stored MIME type.","examples":["application/pdf"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Document title, or `null` when none was supplied.","examples":["Acme Growth Bond prospectus",null]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional summary, or `null` when none was supplied.","examples":["English prospectus filed with FSMA on 15 March 2026.",null]},"uploadedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"fileHash":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Content hash of the stored file, or null when none is recorded."},"uploadedBy":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Account that uploaded this version, or null when unknown."}},"required":["id","tokenAddress","documentType","visibility","groupId","versionNumber","isLatest","fileName","fileSize","mimeType","title","description","uploadedAt","fileHash","uploadedBy"],"additionalProperties":false},"TokenDocumentVisibility":{"type":"string","enum":["public","holders","restricted"],"description":"Who may read this stored document."},"TokenDocumentType":{"type":"string","enum":["prospectus","term_sheet","legal_opinion","regulatory_filing","compliance_report","annual_report","financial_statement","credit_rating","covenant_agreement","shareholder_agreement","fund_fact_sheet","subscription_agreement","nav_report","reserve_audit","attestation_report","reserve_composition","certificate","interest_schedule","property_deed","survey_report","appraisal","environmental_assessment","title_insurance","assay_certificate","storage_receipt","chain_of_custody","insurance_certificate","brand_logo","other"],"description":"Document type, such as prospectus or term sheet."},"TokenDocumentVisibility_1":{"type":"string","enum":["public","holders","restricted"],"description":"Visibility to include: public, holders, or restricted. Omit to return every visibility.","examples":["holders"]},"TokenDocumentType_1":{"type":"string","enum":["prospectus","term_sheet","legal_opinion","regulatory_filing","compliance_report","annual_report","financial_statement","credit_rating","covenant_agreement","shareholder_agreement","fund_fact_sheet","subscription_agreement","nav_report","reserve_audit","attestation_report","reserve_composition","certificate","interest_schedule","property_deed","survey_report","appraisal","environmental_assessment","title_insurance","assay_certificate","storage_receipt","chain_of_custody","insurance_certificate","brand_logo","other"],"description":"Document type to include, such as prospectus. Omit to return every type.","examples":["prospectus"]},"StatsYieldDistributionOutput":{"type":"object","properties":{"periods":{"type":"array","items":{"$ref":"#/components/schemas/YieldDistributionPeriod"},"description":"Indexed yield periods on the token schedule."},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"totalClaimed":{"$ref":"#/components/schemas/BigDecimal"},"totalUnclaimed":{"$ref":"#/components/schemas/BigDecimal"}},"required":["periods","totalYield","totalClaimed","totalUnclaimed"],"additionalProperties":false,"description":"Indexed yield periods plus claimed and unclaimed totals. Use holder yield periods when you need one holder's claims.","examples":[{"periods":[{"id":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6-12","timestamp":"2026-03-04T09:12:41.000Z","totalYield":"1250.00","claimed":"800.00","unclaimed":"450.00"}],"totalYield":"1250.00","totalClaimed":"800.00","totalUnclaimed":"450.00"}]},"YieldDistributionPeriod":{"type":"object","properties":{"id":{"type":"string","description":"Stable identifier of this yield period.","examples":["0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6-12"]},"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalYield":{"$ref":"#/components/schemas/BigDecimal"},"claimed":{"$ref":"#/components/schemas/BigDecimal"},"unclaimed":{"$ref":"#/components/schemas/BigDecimal"}},"required":["id","timestamp","totalYield","claimed","unclaimed"],"additionalProperties":false},"StatsYieldCoverageOutput":{"type":"object","properties":{"yieldCoverage":{"type":"number","description":"Share of unclaimed yield covered by the denomination-asset balance, as a percentage.","examples":[112.5]},"hasYieldSchedule":{"type":"boolean"},"isRunning":{"type":"boolean"},"totalUnclaimedYield":{"$ref":"#/components/schemas/BigDecimal"},"denominationAssetBalance":{"$ref":"#/components/schemas/BigDecimal"},"denominationAssetTreasuryAllowance":{"$ref":"#/components/schemas/BigDecimal"},"allowanceCoveredPercentage":{"$ref":"#/components/schemas/BigDecimal"},"requiredAllowance":{"$ref":"#/components/schemas/BigDecimal"},"treasuryIsContract":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"treasuryAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}]},"scheduleAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}]},"scheduleAbsenceReason":{"anyOf":[{"type":"string","enum":["token-not-indexed","no-schedule"]},{"type":"null"}],"description":"Why no schedule is described. `token-not-indexed` means keep polling. `no-schedule` means the indexed token has no schedule row. Null when a schedule is present.","examples":[null,"no-schedule"]}},"required":["yieldCoverage","hasYieldSchedule","isRunning","totalUnclaimedYield","denominationAssetBalance","denominationAssetTreasuryAllowance","allowanceCoveredPercentage","requiredAllowance","treasuryIsContract","treasuryAddress","scheduleAddress","scheduleAbsenceReason"],"additionalProperties":false,"description":"Indexed treasury coverage for the token yield schedule. Use `scheduleAbsenceReason` to tell a missing schedule from an indexing delay.","examples":[{"yieldCoverage":112.5,"hasYieldSchedule":true,"isRunning":true,"totalUnclaimedYield":"4500.00","denominationAssetBalance":"5062.50","denominationAssetTreasuryAllowance":"8000.00","allowanceCoveredPercentage":"100.00","requiredAllowance":"5750.00","treasuryIsContract":false,"treasuryAddress":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","scheduleAddress":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6","scheduleAbsenceReason":null}]},"StatsWalletDistributionOutput":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/WalletDistributionBucket"},"description":"Holder-count buckets ordered from smallest holdings to largest."},"totalHolders":{"type":"number","description":"Number of indexed holders, including those in every bucket.","examples":[12]}},"required":["buckets","totalHolders"],"additionalProperties":false,"description":"Indexed holder-count buckets. `totalHolders` is the full holder count. Use the holders list when you need each wallet.","examples":[{"buckets":[{"range":"0-1000","count":4},{"range":"1000-10000","count":6},{"range":"10000+","count":2}],"totalHolders":12}]},"WalletDistributionBucket":{"type":"object","properties":{"range":{"type":"string"},"count":{"type":"number"}},"required":["range","count"],"additionalProperties":false},"StatsVolumeOutput":{"type":"object","properties":{"volumeHistory":{"type":"array","items":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalVolume":{"type":"string","description":"Indexed settled transfer volume in token units at this point.","examples":["125000.00"]}},"required":["timestamp","totalVolume"],"additionalProperties":false},"description":"Indexed transfer-volume points for charting."}},"required":["volumeHistory"],"additionalProperties":false,"description":"Indexed transfer-volume series for the requested day window. This is not a live chain probe.","examples":[{"volumeHistory":[{"timestamp":"2026-03-04T09:12:41.000Z","totalVolume":"0"},{"timestamp":"2026-03-11T16:02:08.000Z","totalVolume":"125000.00"}]}]},"StatsTotalSupplyOutput":{"type":"object","properties":{"totalSupplyHistory":{"type":"array","items":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalSupply":{"type":"string","description":"Indexed total supply in token units at this point.","examples":["2500000.00"]}},"required":["timestamp","totalSupply"],"additionalProperties":false},"description":"Indexed total-supply points for charting."}},"required":["totalSupplyHistory"],"additionalProperties":false,"description":"Indexed total-supply series for the requested day window. This is not the live `totalSupply` on the token contract.","examples":[{"totalSupplyHistory":[{"timestamp":"2026-03-04T09:12:41.000Z","totalSupply":"2500000.00"},{"timestamp":"2026-03-11T16:02:08.000Z","totalSupply":"2500000.00"}]}]},"StatsSupplyChangesOutput":{"type":"object","properties":{"supplyChangesHistory":{"type":"array","items":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalMinted":{"type":"string","description":"Cumulative minted amount in token units at this point.","examples":["2500000.00"]},"totalBurned":{"type":"string","description":"Cumulative burned amount in token units at this point.","examples":["0"]}},"required":["timestamp","totalMinted","totalBurned"],"additionalProperties":false},"description":"Indexed mint and burn points for charting."}},"required":["supplyChangesHistory"],"additionalProperties":false,"description":"Indexed mint and burn series for the requested day window. This is not a live chain probe.","examples":[{"supplyChangesHistory":[{"timestamp":"2026-03-04T09:12:41.000Z","totalMinted":"2500000.00","totalBurned":"0"},{"timestamp":"2026-03-11T16:02:08.000Z","totalMinted":"2500000.00","totalBurned":"0"}]}]},"StatsCollateralRatioOutput":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/TokenCollateralRatioBucket"},"description":"Available and used collateral buckets in token denomination units."},"totalCollateral":{"$ref":"#/components/schemas/BigDecimal"},"requiredCollateral":{"$ref":"#/components/schemas/BigDecimal"},"mintableSupply":{"$ref":"#/components/schemas/BigDecimal"},"collateralizationPercentage":{"type":"number","description":"Actual collateral divided by required collateral, times 100. Values above 100 are over-collateralized.","examples":[500]},"configuredCollateralRatioBps":{"type":"number","description":"Configured collateral ratio in basis points. 10000 is 100 percent. 0 disables enforcement.","examples":[2500]}},"required":["buckets","totalCollateral","requiredCollateral","mintableSupply","collateralizationPercentage","configuredCollateralRatioBps"],"additionalProperties":false,"description":"Indexed collateral coverage. Use `mintableSupply` before a mint that depends on remaining capacity.","examples":[{"buckets":[{"name":"available","value":"1250000.00"},{"name":"used","value":"250000.00"}],"totalCollateral":"1250000.00","requiredCollateral":"250000.00","mintableSupply":"10000000.00","collateralizationPercentage":500,"configuredCollateralRatioBps":2500}]},"TokenCollateralRatioBucket":{"type":"object","properties":{"name":{"type":"string"},"value":{"$ref":"#/components/schemas/BigDecimal"}},"required":["name","value"],"additionalProperties":false},"StatsBondStatusOutput":{"type":"object","properties":{"denominationAssetBalanceAvailable":{"$ref":"#/components/schemas/BigDecimal"},"denominationAssetBalanceRequired":{"$ref":"#/components/schemas/BigDecimal"},"coveredPercentage":{"$ref":"#/components/schemas/BigDecimal"},"denominationAssetTreasuryAllowance":{"$ref":"#/components/schemas/BigDecimal"},"allowanceCoveredPercentage":{"$ref":"#/components/schemas/BigDecimal"},"treasuryIsContract":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the treasury is a contract (`true`) or an externally owned account (`false`). `null` while the indexer has not classified it. Do not treat `null` as `false`.","examples":[false,true,null]},"treasuryAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Treasury that funds maturity redemption. Null when no maturity-redemption feature is attached.","examples":["0x2546BcD3c84621e976D8185a91A922aE77ECEc30",null]},"featureAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Maturity-redemption feature contract. Null when the feature is not attached.","examples":["0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",null]},"solvencyKnown":{"type":"boolean","description":"Whether the solvency snapshot is ready. When false, the balance and coverage fields are placeholders, not authoritative zeros.","examples":[true,false]}},"required":["denominationAssetBalanceAvailable","denominationAssetBalanceRequired","coveredPercentage","denominationAssetTreasuryAllowance","allowanceCoveredPercentage","treasuryIsContract","treasuryAddress","featureAddress","solvencyKnown"],"additionalProperties":false,"description":"Indexed bond solvency snapshot. When `solvencyKnown` is false, hide approve and redeem actions until the indexer catches up.","examples":[{"denominationAssetBalanceAvailable":"240000000.00","denominationAssetBalanceRequired":"250000000.00","coveredPercentage":"96.00","denominationAssetTreasuryAllowance":"250000000.00","allowanceCoveredPercentage":"100.00","treasuryIsContract":false,"treasuryAddress":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","featureAddress":"0x8A791620dd6260079BF849Dc5567aDC3F2FdC318","solvencyKnown":true}]},"TokenSupplyMutationAmountInput_1":{"anyOf":[{"$ref":"#/components/schemas/AssetAmount"},{"$ref":"#/components/schemas/TokenSupplyMutationAmounts"}],"description":"One amount, or an array of amounts, as integer decimal strings in token base units. Must match the length of addresses."},"TokenSupplyMutationAmounts":{"type":"array","items":{"$ref":"#/components/schemas/AssetAmount"},"minItems":1,"maxItems":100},"TokenSupplyMutationAddressInput_1":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"$ref":"#/components/schemas/TokenSupplyMutationAddresses"}],"description":"One source address, or an array of up to 100 sources. Must match the length of amounts."},"TokenSupplyMutationAddresses":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"},"minItems":1,"maxItems":100},"TokenSupplyMutationAmountInput":{"anyOf":[{"$ref":"#/components/schemas/AssetAmount"},{"$ref":"#/components/schemas/TokenSupplyMutationAmounts"}],"description":"One amount, or an array of amounts, as integer decimal strings in token base units. Must match the length of recipients."},"TokenSupplyMutationAddressInput":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"$ref":"#/components/schemas/TokenSupplyMutationAddresses"}],"description":"One recipient address, or an array of up to 100 recipients. Must match the length of amounts."},"AssetAmount_7":{"type":"string","pattern":"^[0-9]+$","description":"Allowance to grant, as an integer decimal string in token base units.","examples":["25000000000000000000000"]},"ActionsListResponseV1":{"type":"array","items":{"$ref":"#/components/schemas/ActionV1"},"description":"Every action the caller can execute that matches the v1 filters. There is no pagination envelope on this frozen surface.","examples":[[{"id":"xvp-approve:0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","actionType":"ApproveXvPSettlement","name":"Approve Northwind Series A settlement","target":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","tokenAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","activeAt":"2026-03-15T09:12:41.000Z","status":"PENDING","executedAt":null,"executedBy":null,"expiresAt":"2026-04-20T16:00:00.000Z","source":"on-chain","executor":{"id":"executor:northwind-treasury","executors":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]}}]]},"ActionV1":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the action","examples":["action-001","action-002"]},"actionType":{"$ref":"#/components/schemas/ActionType_1"},"name":{"type":"string","description":"Human-readable display name of the action","examples":["Settlement approval for Series A","KYC Update"]},"target":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Target address for the action (null for off-chain actions)"},"tokenAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Address of the underlying token this action targets, when distinct from `target` (e.g. ClaimYield's `target` is the yield schedule, while the bond is here). Null for off-chain actions."},"activeAt":{"$ref":"#/components/schemas/TimestampEncoded"},"status":{"$ref":"#/components/schemas/ActionStatus_1"},"executedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Timestamp when the action was executed"},"executedBy":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Address that executed the action"},"expiresAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Timestamp when the action expires"},"source":{"$ref":"#/components/schemas/ActionSourceEncoded"},"kycMetadata":{"anyOf":[{"$ref":"#/components/schemas/KycActionMetadata"},{"type":"null"}],"description":"Metadata for KYC update actions","examples":[null]},"multisigMetadata":{"anyOf":[{"$ref":"#/components/schemas/MultisigActionMetadata"},{"type":"null"}],"description":"Metadata for multisig approval actions: includes userOpHash and wallet address for signing","examples":[null]},"custodyMetadata":{"anyOf":[{"$ref":"#/components/schemas/CustodyPendingActionMetadata"},{"type":"null"}],"description":"Metadata for pending custody-approval actions: provider, executability, and approval id for the resolve-approval route","examples":[null]},"governanceMetadata":{"anyOf":[{"$ref":"#/components/schemas/GovernanceActionMetadata"},{"type":"null"}],"description":"Metadata for governance actions (CastVote, ActivateVotingPower, CastPollBallot): proposal or poll identifiers for deep links","examples":[null]},"multisigInviteMetadata":{"anyOf":[{"$ref":"#/components/schemas/MultisigInviteActionMetadata"},{"type":"null"}],"description":"Metadata for MultisigInvite actions: invite ID, draft name, and accept URL for the invitee's Actions list","examples":[null]},"system":{"anyOf":[{"$ref":"#/components/schemas/ActionSystem"},{"type":"null"}]},"executor":{"$ref":"#/components/schemas/ActionExecutorV1"}},"required":["id","actionType","name","target","tokenAddress","activeAt","status","executedAt","executedBy","expiresAt","executor"],"additionalProperties":false,"description":"Frozen v1 action row. `executor.executors` is the authenticated caller's wallet, which is the only signer that can execute this user-scoped feed.","examples":[{"id":"xvp-approve:0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","actionType":"ApproveXvPSettlement","name":"Approve Northwind Series A settlement","target":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","tokenAddress":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","activeAt":"2026-03-15T09:12:41.000Z","status":"PENDING","executedAt":null,"executedBy":null,"expiresAt":"2026-04-20T16:00:00.000Z","source":"on-chain","executor":{"id":"executor:northwind-treasury","executors":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]}}]},"ActionExecutorV1":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the action executor","examples":["exec-001","exec-002"]},"executors":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}]},"description":"List of addresses authorized to execute actions"}},"required":["id","executors"],"additionalProperties":false,"description":"Executor information for the action"},"ActionSystem":{"type":"object","properties":{"address":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}]},"organizationName":{"type":"string"}},"required":["address","organizationName"],"additionalProperties":false,"description":"The system the action belongs to and the organization that owns it."},"MultisigInviteActionMetadata":{"type":"object","properties":{"inviteId":{"type":"string","description":"UUID of the multisig draft invite","examples":["019dce7d-4bd0-7daf-a42c-fcc222517fbb"]},"draftName":{"type":"string","description":"Name of the multisig draft the invite is for","examples":["Operations Multisig"]},"inviteUrl":{"type":"string","description":"Full URL of the accept page: navigating here accepts the invite","examples":["https://app.dalp.io/multisig-invite/abc123"]},"weight":{"type":"string","description":"Signer weight assigned to the invitee (bigint as decimal string)","examples":["1"]},"threshold":{"type":"string","description":"Required cumulative weight for the multisig (bigint as decimal string)","examples":["2"]}},"required":["inviteId","draftName","inviteUrl","weight","threshold"],"additionalProperties":false},"GovernanceActionMetadata":{"type":"object","properties":{"governorAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Governor contract address the proposal lives on (null for poll actions)"},"proposalId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"On-chain proposal id: uint256 as a decimal string (null for poll actions)","examples":["12345678901234567890",null]},"pollId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Off-chain poll id (null for on-chain governance actions)","examples":["019dce7d-4bd0-7daf-a42c-fcc222517fbb",null]}},"required":["governorAddress","proposalId","pollId"],"additionalProperties":false},"CustodyPendingActionMetadata":{"type":"object","properties":{"provider":{"type":"string","description":"Custody provider backing this approval","examples":["luna","dfns","fireblocks"]},"executable":{"type":"boolean","description":"Whether the approval can be approved/denied in-app (true for DFNS/Fireblocks, false for out-of-band Luna)","examples":[true,false]},"approvalId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Provider approval id passed to the resolve-approval route; null for out-of-band providers","examples":["appr-001",null]},"transactionId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"transaction_request id this approval blocks, when known (out-of-band path)","examples":["019dce7d-4bd0-7daf-a42c-fcc222517fbb",null]},"operationKind":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable operation kind awaiting approval","examples":["token.transfer",null]}},"required":["provider","executable","approvalId","transactionId","operationKind"],"additionalProperties":false},"MultisigActionMetadata":{"type":"object","properties":{"userOpHash":{"type":"string","description":"UserOperation hash: needed to call POST /sign endpoint","examples":["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]},"walletAddress":{"$ref":"#/components/schemas/EvmAddress"},"threshold":{"type":"string","description":"Required cumulative weight (bigint as decimal string)","examples":["2"]},"currentWeight":{"type":"string","description":"Current accumulated weight (bigint as decimal string)","examples":["1"]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable description of the pending operation","examples":["Add signer 0x1234...abcd",null]},"operationKind":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Operation kind from the transaction queue (e.g., smart-wallet.add-signer)","examples":["smart-wallet.add-signer",null]}},"required":["userOpHash","walletAddress","threshold","currentWeight","description","operationKind"],"additionalProperties":false},"KycActionMetadata":{"type":"object","properties":{"reason":{"type":"string","description":"Reason for the update request","examples":["Address change required","Document expired"]},"requiredFields":{"type":"array","items":{"type":"string"},"description":"List of fields that need updating","examples":[["address","phone"],["passport"]]},"sourceVersionId":{"type":"string","description":"ID of the version to clone data from when creating draft","examples":["ver-001","ver-002"]},"requestId":{"type":"string","description":"ID of the KYC action request","examples":["req-001","req-002"]}},"required":["reason","requiredFields","sourceVersionId","requestId"],"additionalProperties":false},"ActionSourceEncoded":{"anyOf":[{"$ref":"#/components/schemas/ActionSource"},{"type":"null"}]},"ActionSource":{"type":"string","enum":["on-chain","off-chain"]},"ActionStatus_1":{"type":"string","enum":["PENDING","UPCOMING","EXECUTED","EXPIRED"],"description":"Current status of the action","examples":["PENDING","EXECUTED"]},"ActionType_1":{"type":"string","enum":["MatureBond","RedeemBond","ClaimYield","ClaimDividend","ApproveMaturityAllowance","ApproveYieldAllowance","ApproveXvPSettlement","ExecuteXvPSettlement","UpdateKYCData","MultisigApproval","custody-pending","CheckerApproval","CastVote","CastPollBallot","ActivateVotingPower","MultisigInvite"],"description":"Canonical action type used for filtering and execution","examples":["ApproveXvPSettlement","UpdateKYCData"]},"ActionType":{"type":"string","enum":["MatureBond","RedeemBond","ClaimYield","ClaimDividend","ApproveMaturityAllowance","ApproveYieldAllowance","ApproveXvPSettlement","ExecuteXvPSettlement","UpdateKYCData","MultisigApproval","custody-pending","CheckerApproval","CastVote","CastPollBallot","ActivateVotingPower","MultisigInvite"],"description":"Filter actions by canonical action type","examples":["ClaimYield","ApproveXvPSettlement"]},"ActionTargetAddresses":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"},"description":"Filter actions by their target addresses"},"ActionStatus":{"type":"string","enum":["PENDING","UPCOMING","EXECUTED","EXPIRED"],"description":"Filter actions by their current status","examples":["PENDING","EXECUTED"]},"Token":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"$ref":"#/components/schemas/EvmAddress"},"complianceContract":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The per-token SMARTCompliance contract address that hosts this token's compliance modules. Null when not yet indexed."},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The most recently indexed per-token identity registry contract that controls which addresses are eligible to hold this token."},"type":{"$ref":"#/components/schemas/AssetTypeOrSlug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"The name of the token","examples":["Acme Growth Bond"]},"symbol":{"type":"string","description":"The symbol of the token","examples":["ACME25"]},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned URL for the token's brand logo, or null when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal_1"},"basePriceCurrencyCode":{"anyOf":[{"$ref":"#/components/schemas/FiatCurrency"},{"type":"null"}],"description":"The base price currency code of the token"},"totalSupply":{"$ref":"#/components/schemas/BigDecimal_2"},"totalSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"extensions":{"$ref":"#/components/schemas/AssetExtensionArray_1"},"implementsERC3643":{"type":"boolean","description":"Whether the token implements ERC3643"},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, null = unknown."},"implementsSMART":{"type":"boolean","description":"Whether the token implements SMART"},"identity":{"$ref":"#/components/schemas/TokenIdentity"},"pausable":{"$ref":"#/components/schemas/TokenPausable"},"collateral":{"anyOf":[{"type":"object","properties":{"collateral":{"anyOf":[{"$ref":"#/components/schemas/BigDecimal"},{"type":"null"}]},"collateralExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"expiryTimestamp":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"The expiry timestamp of the collateral"}},"required":["expiryTimestamp"],"additionalProperties":false},{"type":"null"}],"description":"The collateral of the token"},"capped":{"anyOf":[{"type":"object","properties":{"cap":{"$ref":"#/components/schemas/BigDecimal"},"capExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["cap","capExact"],"additionalProperties":false},{"type":"null"}],"description":"The max supply of the token"},"createdBy":{"$ref":"#/components/schemas/AddressRef"},"redeemable":{"anyOf":[{"type":"object","properties":{"redeemedAmount":{"$ref":"#/components/schemas/BigDecimal"},"redeemedAmountExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["redeemedAmount"],"additionalProperties":false},{"type":"null"}],"description":"The amount of tokens redeemed"},"yield":{"anyOf":[{"type":"object","properties":{"schedule":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"denominationAsset":{"$ref":"#/components/schemas/RuntimeDenominationAsset"}},"required":["id","denominationAsset"],"additionalProperties":false},{"type":"null"}]}},"required":["schedule"],"additionalProperties":false},{"type":"null"}],"description":"The yield of the token"},"bond":{"anyOf":[{"type":"object","properties":{"faceValue":{"$ref":"#/components/schemas/BigDecimal"},"faceValueExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"isMatured":{"type":"boolean","description":"Whether the bond is matured"},"maturityDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalRedeemed":{"$ref":"#/components/schemas/BigDecimal"},"totalRedeemedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"denominationAsset":{"$ref":"#/components/schemas/RuntimeDenominationAsset"}},"required":["faceValue","faceValueExact","isMatured","maturityDate","totalRedeemed","totalRedeemedExact","denominationAsset"],"additionalProperties":false},{"type":"null"}],"description":"The bond of the token"},"fund":{"anyOf":[{"type":"object","properties":{"managementFeeBps":{"$ref":"#/components/schemas/BigDecimal"}},"required":["managementFeeBps"],"additionalProperties":false},{"type":"null"}],"description":"The fund of the token"},"accessControl":{"$ref":"#/components/schemas/AccessControl_1"},"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"type":"object","properties":{"typeId":{"$ref":"#/components/schemas/ComplianceTypeId_2"}},"required":["typeId"],"additionalProperties":false}},"required":["id","complianceModule"],"additionalProperties":false},"description":"Enabled compliance modules for this token"},"userPermissions":{"type":"object","properties":{"roles":{"type":"object","properties":{"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"custodian":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"emergency":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"fundsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"governance":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"saleAdmin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"supplyManagement":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false,"description":"The roles of the user for the token"},"actions":{"$ref":"#/components/schemas/TokenPermissionActions"}},"required":["roles","actions"],"additionalProperties":false,"description":"The permissions of the user for the token"},"stats":{"anyOf":[{"type":"object","properties":{"balancesCount":{"type":"number","description":"The number of accounts holding this token"},"totalValueInBaseCurrency":{"$ref":"#/components/schemas/BigDecimal"},"totalBurned":{"$ref":"#/components/schemas/BigDecimal"},"totalBurnedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["balancesCount","totalValueInBaseCurrency","totalBurned","totalBurnedExact"],"additionalProperties":false},{"type":"null"}],"description":"The stats of the token"}},"required":["id","tokenFactory","complianceContract","identityRegistry","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","extensions","implementsERC3643","smartInterface","implementsSMART","pausable","collateral","capped","createdBy","redeemable","yield","bond","fund","complianceModuleConfigs","stats"],"additionalProperties":false,"description":"Indexed token. Amounts such as `totalSupply` are decimal-adjusted. `*Exact` fields are raw uint256 decimal strings. Extension blocks (`bond`, `yield`, `fund`, `capped`, `collateral`, `redeemable`) are `null` when that feature is not installed.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db","complianceContract":"0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2","identityRegistry":"0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB","type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","extensions":["BOND","PAUSABLE","ACCESS_MANAGED"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":null,"createdBy":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"redeemable":null,"yield":null,"bond":{"faceValue":"1000.00","faceValueExact":"1000000000000000000000","isMatured":false,"maturityDate":"2027-03-15T00:00:00.000Z","totalRedeemed":"125000.00","totalRedeemedExact":"125000000000000000000000","denominationAsset":{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":42,"totalValueInBaseCurrency":"125000050.00","totalBurned":"1000.00","totalBurnedExact":"1000000000000000000000"}}]},"TokenPermissionActions":{"type":"object","properties":{"burn":{"type":"boolean"},"grantRole":{"type":"boolean"},"grantRoleByParticipant":{"type":"boolean"},"revokeRole":{"type":"boolean"},"revokeRoleByParticipant":{"type":"boolean"},"mint":{"type":"boolean"},"pause":{"type":"boolean"},"addComplianceModule":{"type":"boolean"},"approve":{"type":"boolean"},"forcedRecover":{"type":"boolean"},"freezeAddress":{"type":"boolean"},"recoverERC20":{"type":"boolean"},"recoverTokens":{"type":"boolean"},"redeem":{"type":"boolean"},"mature":{"type":"boolean"},"removeComplianceModule":{"type":"boolean"},"setCap":{"type":"boolean"},"setComplianceModuleParams":{"type":"boolean"},"setYieldSchedule":{"type":"boolean"},"topUpDenominationAsset":{"type":"boolean"},"withdrawDenominationAsset":{"type":"boolean"},"transfer":{"type":"boolean"},"forcedTransfer":{"type":"boolean"},"unpause":{"type":"boolean"},"updateCollateral":{"type":"boolean"},"freezePartial":{"type":"boolean"},"unfreezePartial":{"type":"boolean"},"claimIssue":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"setMetadata":{"type":"boolean"},"removeMetadata":{"type":"boolean"},"setAumFeeBps":{"type":"boolean"},"setAumFeeRecipient":{"type":"boolean"},"approveTransfer":{"type":"boolean"},"revokeTransferApproval":{"type":"boolean"},"collectAumFee":{"type":"boolean"},"freezeAumFeeRate":{"type":"boolean"},"claimYield":{"type":"boolean"},"setYieldTreasury":{"type":"boolean"},"matureEarly":{"type":"boolean"},"setMaturityTreasury":{"type":"boolean"},"topUpMaturityTreasury":{"type":"boolean"},"topUpYieldTreasury":{"type":"boolean"},"topUpBondDenomination":{"type":"boolean"},"setTransactionFeeRates":{"type":"boolean"},"setTransactionFeeRecipient":{"type":"boolean"},"freezeTransactionFeeRates":{"type":"boolean"},"setExternalTransactionFees":{"type":"boolean"},"setExternalTransactionFeeRecipient":{"type":"boolean"},"setExternalTransactionFeeToken":{"type":"boolean"},"freezeExternalTransactionFees":{"type":"boolean"},"setTransactionFeeAccountingRates":{"type":"boolean"},"setTransactionFeeAccountingRecipient":{"type":"boolean"},"freezeTransactionFeeAccountingRates":{"type":"boolean"},"reconcileFees":{"type":"boolean"},"setFeeExemption":{"type":"boolean"},"delegate":{"type":"boolean"},"delegateBySig":{"type":"boolean"},"permit":{"type":"boolean"},"publishTrigger":{"type":"boolean"},"disableTrigger":{"type":"boolean"},"setConversionWindow":{"type":"boolean"},"convert":{"type":"boolean"},"forceConvert":{"type":"boolean"},"addAuthorizedConverter":{"type":"boolean"},"removeAuthorizedConverter":{"type":"boolean"},"addHoldReserver":{"type":"boolean"},"removeHoldReserver":{"type":"boolean"},"setPrice":{"type":"boolean"},"featureAttach":{"type":"boolean"},"featureDetach":{"type":"boolean"},"featureRotate":{"type":"boolean"}},"required":["burn","grantRole","grantRoleByParticipant","revokeRole","revokeRoleByParticipant","mint","pause","addComplianceModule","approve","forcedRecover","freezeAddress","recoverERC20","recoverTokens","redeem","mature","removeComplianceModule","setCap","setComplianceModuleParams","setYieldSchedule","topUpDenominationAsset","withdrawDenominationAsset","transfer","forcedTransfer","unpause","updateCollateral","freezePartial","unfreezePartial","claimIssue","claimRevoke","setMetadata","removeMetadata","setAumFeeBps","setAumFeeRecipient","approveTransfer","revokeTransferApproval","collectAumFee","freezeAumFeeRate","claimYield","setYieldTreasury","matureEarly","setMaturityTreasury","topUpMaturityTreasury","topUpYieldTreasury","topUpBondDenomination","setTransactionFeeRates","setTransactionFeeRecipient","freezeTransactionFeeRates","setExternalTransactionFees","setExternalTransactionFeeRecipient","setExternalTransactionFeeToken","freezeExternalTransactionFees","setTransactionFeeAccountingRates","setTransactionFeeAccountingRecipient","freezeTransactionFeeAccountingRates","reconcileFees","setFeeExemption","delegate","delegateBySig","permit","publishTrigger","disableTrigger","setConversionWindow","convert","forceConvert","addAuthorizedConverter","removeAuthorizedConverter","addHoldReserver","removeHoldReserver","setPrice","featureAttach","featureDetach","featureRotate"],"additionalProperties":false,"description":"The actions on the token the user is allowed to execute"},"AccessControl_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"addonRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"admin":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"auditor":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"claimPolicyManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"claimIssuer":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"complianceManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"custodian":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"emergency":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"feedsManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"fundsManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"gasManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"governance":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"identityManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"identityRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"organisationIdentityManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"saleAdmin":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"supplyManagement":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"systemManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"systemModule":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"tokenFactoryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"tokenFactoryRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"tokenManager":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"trustedIssuersMetaRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_1"},"addonManager":{"$ref":"#/components/schemas/AccessControlAccountArrayEncoded"},"tradingVenueOperator":{"$ref":"#/components/schemas/AccessControlAccountArrayEncoded"},"roleAdmins":{"$ref":"#/components/schemas/AccessControlRoleAdminsEncoded"}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false,"description":"The access control of the token"},"AccessControlRoleAdminsEncoded":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AccessControlRoleAdmin_1"}},{"type":"null"}]},"AccessControlRoleAdmin_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"$ref":"#/components/schemas/AccessControlRole_1"},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"$ref":"#/components/schemas/AccessControlRole_1"}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false},"AccessControlRole_1":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"AccessControlAccountArrayEncoded":{"anyOf":[{"$ref":"#/components/schemas/AccessControlAccountArray_1"},{"type":"null"}]},"AccessControlAccountArray_1":{"type":"array","items":{"$ref":"#/components/schemas/AccessControlAccount_1"}},"AccessControlAccount_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false},"RuntimeDenominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"$ref":"#/components/schemas/AssetSymbol_3"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset used to denominate bond face value or yield payments."},"AddressRef":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"The user who created the token","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"TokenIdentity":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"isContract":{"type":"boolean"},"registered":{"$ref":"#/components/schemas/IdentityRegistration"},"claims":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/IdentityClaim"}},{"type":"null"}]}},"required":["id","account","isContract"],"additionalProperties":false,"description":"Identity associated with this token"},"IdentityClaim":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"signature":{"type":"string"},"revoked":{"type":"boolean"},"issuer":{"$ref":"#/components/schemas/ClaimIssuer"},"values":{"type":"array","items":{"$ref":"#/components/schemas/ClaimValue"}},"isTrusted":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","signature","revoked","issuer","values"],"additionalProperties":false},"ClaimValue":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false},"ClaimIssuer":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]}},"required":["id","account"],"additionalProperties":false},"IdentityRegistration":{"anyOf":[{"$ref":"#/components/schemas/IdentityRegistered"},{"$ref":"#/components/schemas/IdentityUnregistered"}],"description":"Registration state. An object with `isRegistered: true` is ACTIVE. The literal `false` means not registered.","examples":[{"isRegistered":true,"country":"BE"},false]},"IdentityUnregistered":{"type":"boolean","enum":[false],"description":"`false` means the identity is not registered in this registry.","examples":[false]},"IdentityRegistered":{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true],"description":"Always `true` on this arm. The identity is ACTIVE in the registry.","examples":[true]},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode_1"},{"type":"null"}],"allOf":[{"description":"Country the registry records for the identity, as an ISO 3166-1 alpha-2 code, or `null` when the stored numeric code maps to no country.","examples":["BE"]}]}},"required":["isRegistered","country"],"additionalProperties":false,"description":"Identity is registered and ACTIVE. `country` is the stored ISO alpha-2 code when one is set.","examples":[{"isRegistered":true,"country":"BE"}]},"ISOCountryCode_1":{"type":"string"},"BigDecimal_2":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["1250000.5"]},"BigDecimal_1":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["100.00"]},"TokenUpdateCollateralBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"externalMessageAuthorization":{"$ref":"#/components/schemas/ExternalMessageAuthorization"},"amount":{"$ref":"#/components/schemas/AssetAmount_6"},"expiryTimestamp":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["amount"],"additionalProperties":false,"description":"Update the collateral amount recorded on the token named in the path.","examples":[{"amount":"1000000000000000000000000","expiryTimestamp":"1828886400","walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"}}]},"AssetAmount_6":{"type":"string","pattern":"^[0-9]+$","description":"Collateral amount as an integer decimal string in the collateral asset's base units.","examples":["1000000000000000000000000"]},"ExternalMessageAuthorization":{"type":"object","properties":{"signature":{"$ref":"#/components/schemas/EthereumHexEncoded"}},"required":["signature"],"additionalProperties":false,"description":"External-wallet signature over the exact signing payload prepared by the Platform API."},"OptionalUserVerification_4":{"anyOf":[{"$ref":"#/components/schemas/UserVerification_3"},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"UserVerification_3":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"TokenClaimRevokeOutput":{"type":"object","properties":{"success":{"type":"boolean","description":"True when the claim-revoke transaction settled.","examples":[true]},"txHash":{"type":"string","description":"Transaction hash of the settled claim-revoke write.","examples":["0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"]},"claimId":{"type":"string","description":"On-chain claim identifier that was revoked.","examples":["0x1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"]}},"required":["success","txHash","claimId"],"additionalProperties":false,"description":"Settled claim-revoke result for the token identity.","examples":[{"success":true,"txHash":"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","claimId":"0x1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"}]},"TokenClaimRevokeBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"externalMessageAuthorization":{"$ref":"#/components/schemas/ExternalMessageAuthorization"},"claimTopic":{"anyOf":[{"$ref":"#/components/schemas/ClaimTopic"},{"type":"string","minLength":1,"maxLength":100}],"description":"Registered claim topic to revoke, either a known topic name or a custom topic string.","examples":["uniqueIdentifier"]}},"required":["claimTopic"],"additionalProperties":false,"description":"Revoke a previously issued identity claim on the token named in the path.","examples":[{"claimTopic":"uniqueIdentifier","walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"}}]},"ClaimTopic":{"type":"string","enum":["knowYourCustomer","antiMoneyLaundering","knowYourTransaction","knowYourBusiness","qualifiedInstitutionalInvestor","professionalInvestor","accreditedInvestor","accreditedInvestorVerified","regulationS","issuerProspectusFiled","issuerProspectusExempt","issuerLicensed","issuerReportingCompliant","issuerJurisdiction","collateral","uniqueIdentifier","assetClassification","basePrice","assetIssuer","assetLocation","assetCoordinates","assetPhysicalDetails","documentHash","sanctionsScreening","issuerEventDetermination","instrumentStructure","contractIdentity","custom"],"description":"Type of identity claim"},"TokenClaimIssueOutput":{"type":"object","properties":{"success":{"type":"boolean","description":"True when the claim-issue transaction settled.","examples":[true]},"txHash":{"type":"string","description":"Transaction hash of the settled claim-issue write.","examples":["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]},"claimTopic":{"type":"string","description":"Topic that was issued.","examples":["uniqueIdentifier"]},"targetIdentity":{"$ref":"#/components/schemas/EvmAddress"}},"required":["success","txHash","claimTopic","targetIdentity"],"additionalProperties":false,"description":"Settled claim-issue result for the token identity.","examples":[{"success":true,"txHash":"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","claimTopic":"uniqueIdentifier","targetIdentity":"0x90F79bf6EB2c4f870365E785982E1f101E93b906"}]},"TokenClaimIssueBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"externalMessageAuthorization":{"$ref":"#/components/schemas/ExternalMessageAuthorization"},"claim":{"$ref":"#/components/schemas/ClaimData"}},"required":["claim"],"additionalProperties":false,"description":"Issue an identity claim against the token named in the path. The claim data must match the registered topic scheme.","examples":[{"claim":{"topic":"uniqueIdentifier","data":{"identifier":"XS2551234567"}},"walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"}}]},"ClaimData":{"anyOf":[{"$ref":"#/components/schemas/InvestorClaimData"},{"$ref":"#/components/schemas/AssetClassificationClaimData"},{"$ref":"#/components/schemas/AssetIssuerClaimData"},{"$ref":"#/components/schemas/BasePriceClaimData"},{"$ref":"#/components/schemas/CollateralClaimData"},{"$ref":"#/components/schemas/ContractIdentityClaimData"},{"$ref":"#/components/schemas/IssuerJurisdictionClaimData"},{"$ref":"#/components/schemas/IssuerLicensedClaimData"},{"$ref":"#/components/schemas/IssuerProspectusExemptClaimData"},{"$ref":"#/components/schemas/IssuerProspectusFiledClaimData"},{"$ref":"#/components/schemas/IssuerReportingCompliantClaimData"},{"$ref":"#/components/schemas/UniqueIdentifierClaimData"},{"$ref":"#/components/schemas/AssetLocationClaimData"},{"$ref":"#/components/schemas/AssetCoordinatesClaimData"},{"$ref":"#/components/schemas/AssetPhysicalDetailsClaimData"},{"$ref":"#/components/schemas/DocumentHashClaimData"},{"$ref":"#/components/schemas/CustomClaimData"}],"description":"Claim topic and data that match a topic registered for the active system. Investor, issuer, and asset topics are accepted when the scheme lists them.","examples":[{"topic":"uniqueIdentifier","data":{"identifier":"XS2551234567"}}]},"CustomClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["custom"]},"topicName":{"type":"string","minLength":1,"maxLength":100,"description":"Custom topic name, 1 to 100 characters.","examples":["internalRiskRating"]},"signature":{"type":"string","description":"Issuer signature over the custom claim payload.","examples":["0xdeadbeef"]},"data":{"type":"array","description":"ABI-encoded custom claim arguments. Treat as opaque unless the topic documents the tuple."}},"required":["topic","topicName","signature","data"],"additionalProperties":false,"description":"Custom topic claim with an explicit topic name and signature.","examples":[{"topic":"custom","topicName":"internalRiskRating","signature":"0xdeadbeef","data":[]}]},"DocumentHashClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["documentHash"]},"data":{"type":"object","properties":{"sha256Hash":{"type":"string","description":"SHA-256 digest of the document, hex-encoded.","examples":["e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"]},"documentType":{"type":"string","description":"Document class, such as prospectus or appraisal.","examples":["prospectus"]},"fileName":{"type":"string","description":"Original file name.","examples":["acme-growth-bond-prospectus.pdf"]}},"required":["sha256Hash","documentType","fileName"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Hash of an off-chain document attached to the asset.","examples":[{"topic":"documentHash","data":{"sha256Hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","documentType":"prospectus","fileName":"acme-growth-bond-prospectus.pdf"}}]},"AssetPhysicalDetailsClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["assetPhysicalDetails"]},"data":{"type":"object","properties":{"propertyArea":{"type":"string","minLength":1,"pattern":"^\\d+$","description":"Property area as a positive integer string. Unit is defined by the issuer template.","examples":["240"]},"buildingYear":{"type":"string","minLength":1,"pattern":"^\\d+$","description":"Year the building was completed.","examples":["1998"]},"numberOfUnits":{"type":"string","minLength":1,"pattern":"^\\d+$","description":"Number of units in the property.","examples":["12"]}},"required":["propertyArea","buildingYear","numberOfUnits"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Physical attributes of a real-estate asset.","examples":[{"topic":"assetPhysicalDetails","data":{"propertyArea":"240","buildingYear":"1998","numberOfUnits":"12"}}]},"AssetCoordinatesClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["assetCoordinates"]},"data":{"type":"object","properties":{"latitude":{"type":"string","minLength":1,"pattern":"^-?\\d+(?:\\.\\d+)?$","description":"Latitude as a decimal string.","examples":["50.8503"]},"longitude":{"type":"string","minLength":1,"pattern":"^-?\\d+(?:\\.\\d+)?$","description":"Longitude as a decimal string.","examples":["4.3517"]}},"required":["latitude","longitude"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Geographic coordinates of a real-world asset.","examples":[{"topic":"assetCoordinates","data":{"latitude":"50.8503","longitude":"4.3517"}}]},"AssetLocationClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["assetLocation"]},"data":{"type":"object","properties":{"city":{"type":"string","description":"City of the underlying asset.","examples":["Brussels"]},"districtCode":{"type":"string","description":"District or postal sector code.","examples":["1000"]},"areaId":{"type":"string","description":"Local area or parcel identifier.","examples":["BRU-IX-4412"]}},"required":["city","districtCode","areaId"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Civic location of a real-world asset.","examples":[{"topic":"assetLocation","data":{"city":"Brussels","districtCode":"1000","areaId":"BRU-IX-4412"}}]},"UniqueIdentifierClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["uniqueIdentifier"]},"data":{"type":"object","properties":{"identifier":{"type":"string","description":"Stable unique identifier for the instrument, such as an ISIN.","examples":["BE0003796134"]}},"required":["identifier"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Unique instrument identifier claim.","examples":[{"topic":"uniqueIdentifier","data":{"identifier":"BE0003796134"}}]},"IssuerReportingCompliantClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerReportingCompliant"]},"data":{"type":"object","properties":{"compliant":{"type":"boolean","description":"Whether the issuer currently meets reporting duties.","examples":[true]},"lastUpdated":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["compliant","lastUpdated"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Issuer ongoing reporting status and the time it was last attested."},"IssuerProspectusFiledClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerProspectusFiled"]},"data":{"type":"object","properties":{"prospectusReference":{"type":"string","description":"Filing reference for the prospectus.","examples":["FSMA-PROS-2026-018"]}},"required":["prospectusReference"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"States that a prospectus has been filed.","examples":[{"topic":"issuerProspectusFiled","data":{"prospectusReference":"FSMA-PROS-2026-018"}}]},"IssuerProspectusExemptClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerProspectusExempt"]},"data":{"type":"object","properties":{"exemptionReference":{"type":"string","description":"Legal reference for the prospectus exemption.","examples":["Reg S Rule 903"]}},"required":["exemptionReference"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"States that the offering relies on a prospectus exemption.","examples":[{"topic":"issuerProspectusExempt","data":{"exemptionReference":"Reg S Rule 903"}}]},"IssuerLicensedClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerLicensed"]},"data":{"type":"object","properties":{"licenseType":{"type":"string","description":"License class granted to the issuer.","examples":["MiFID investment firm"]},"licenseNumber":{"type":"string","description":"License number as issued by the regulator.","examples":["FSMA-2026-441"]},"jurisdiction":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_1"},"validUntil":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["licenseType","licenseNumber","jurisdiction","validUntil"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Issuer license details: type, number, jurisdiction, and expiry."},"ISOCountryCodeNumericEncoded_1":{"anyOf":[{"type":"string","pattern":"^\\d{1,3}$"},{"type":"number","multipleOf":1,"minimum":0,"maximum":999}]},"IssuerJurisdictionClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["issuerJurisdiction"]},"data":{"type":"object","properties":{"jurisdiction":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_1"}},"required":["jurisdiction"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Issuer country of jurisdiction.","examples":[{"topic":"issuerJurisdiction","data":{"jurisdiction":56}}]},"ContractIdentityClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["contractIdentity"]},"data":{"type":"object","properties":{"contractAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["contractAddress"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Links the claim to an identity contract address.","examples":[{"topic":"contractIdentity","data":{"contractAddress":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"}}]},"CollateralClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["collateral"]},"data":{"type":"object","properties":{"amount":{"$ref":"#/components/schemas/AssetAmount"},"expiryTimestamp":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["amount","expiryTimestamp"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Collateral amount and expiry for a backed instrument."},"BasePriceClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["basePrice"]},"data":{"type":"object","properties":{"amount":{"$ref":"#/components/schemas/BigDecimal_9"},"currencyCode":{"$ref":"#/components/schemas/FiatCurrency"}},"required":["amount","currencyCode"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Unit price claim used for valuation."},"BigDecimal_9":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["100.00"]},"AssetIssuerClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["assetIssuer"]},"data":{"type":"object","properties":{"issuerAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["issuerAddress"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Names the issuer address for this asset.","examples":[{"topic":"assetIssuer","data":{"issuerAddress":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}}]},"AssetClassificationClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["assetClassification"]},"data":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/AssetType"},"category":{"anyOf":[{"$ref":"#/components/schemas/EquityCategory_1"},{"$ref":"#/components/schemas/FundCategory_1"},{"$ref":"#/components/schemas/RealEstatePropertyUse_1"}]}},"required":["type"],"additionalProperties":false}},"required":["topic","data"],"additionalProperties":false,"description":"Classifies the instrument. Equity, fund, and real-estate types require a matching `category`.","examples":[{"topic":"assetClassification","data":{"type":"bond"}}]},"RealEstatePropertyUse_1":{"type":"string","enum":["RESIDENTIAL","COMMERCIAL","INDUSTRIAL","AGRICULTURAL","INSTITUTIONAL","MIXED_USE","RETAIL","OFFICE","HOSPITALITY","HEALTHCARE","EDUCATIONAL","RELIGIOUS","RECREATIONAL","CULTURAL","STORAGE","PARKING","TRANSPORTATION","UTILITIES","GOVERNMENTAL","PUBLIC_SPACE","DEVELOPMENT","VACANT","UNAVAILABLE","PUBLIC_SERVICES","PUBLIC_FACILITIES_TRANSPORTATION","ANCIENT_URBAN_REGION","VACANT_LAND","PLANS_AND_SYMBOLS","MANSION_USE","OTHER"],"description":"Usage classification of property"},"FundCategory_1":{"type":"string","enum":["ACTIVIST","COMMODITY_TRADING","CONVERTIBLE_ARBITRAGE","CREDIT","CURRENCY_FX","DISTRESSED_DEBT","EMERGING_MARKETS","EQUITY_HEDGE","EVENT_DRIVEN","FIXED_INCOME_ARBITRAGE","FUND_OF_FUNDS","GLOBAL_MACRO","HIGH_FREQUENCY_TRADING","MANAGED_FUTURES_CTA","MARKET_NEUTRAL","MERGER_ARBITRAGE","MULTI_STRATEGY","PRIVATE_EQUITY","VENTURE_CAPITAL"],"description":"Category of investment fund"},"EquityCategory_1":{"type":"string","enum":["COMMON_EQUITY","VOTING_COMMON_STOCK","NON_VOTING_COMMON_STOCK","CUMULATIVE_PREFERRED_STOCK","NON_CUMULATIVE_PREFERRED_STOCK","CONVERTIBLE_PREFERRED_STOCK","REDEEMABLE_PREFERRED_STOCK","LARGE_CAP_EQUITY","MID_CAP_EQUITY","SMALL_CAP_EQUITY","MICRO_CAP_EQUITY","DOMESTIC_EQUITY","INTERNATIONAL_EQUITY","GLOBAL_EQUITY","EMERGING_MARKET_EQUITY","FRONTIER_MARKET_EQUITY","TECHNOLOGY","FINANCIALS","HEALTHCARE","ENERGY","CONSUMER_STAPLES","CONSUMER_DISCRETIONARY","INDUSTRIALS","MATERIALS","UTILITIES","COMMUNICATION_SERVICES","REAL_ESTATE","GROWTH_EQUITY","VALUE_EQUITY","BLEND_EQUITY","INCOME_EQUITY","VENTURE_CAPITAL","GROWTH_CAPITAL","LEVERAGED_BUYOUTS","MEZZANINE_FINANCING","DISTRESSED_EQUITY","RESTRICTED_STOCK","ESOP_SHARES","TRACKING_STOCKS","DUAL_CLASS_SHARES"],"description":"Category of equity"},"InvestorClaimData":{"type":"object","properties":{"topic":{"type":"string","enum":["knowYourCustomer","antiMoneyLaundering","knowYourTransaction","knowYourBusiness","qualifiedInstitutionalInvestor","professionalInvestor","accreditedInvestor","accreditedInvestorVerified","regulationS"],"description":"Investor-qualification topic this claim asserts.","examples":["knowYourCustomer","accreditedInvestor"]},"data":{"$ref":"#/components/schemas/InvestorClaimPayload"}},"required":["topic","data"],"additionalProperties":false,"description":"Investor qualification claim. `topic` names the check; `data.claim` is the issuer payload. `data.validUntil` optionally expires it.","examples":[{"topic":"knowYourCustomer","data":{"claim":"verified"}}]},"InvestorClaimPayload":{"type":"object","properties":{"claim":{"type":"string","description":"Issuer-supplied claim payload for this topic. Treat as opaque text unless the topic documents a format.","examples":["verified"]},"validUntil":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["claim"],"additionalProperties":false},"AssetAmount_5":{"type":"string","pattern":"^[0-9]+$","description":"Amount of the ERC-20 token to recover, as an integer decimal string in that token's base units.","examples":["25000000000"]},"TokenSetYieldScheduleBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"schedule":{"$ref":"#/components/schemas/EvmAddress"}},"required":["schedule"],"additionalProperties":false,"description":"Attach or replace the yield schedule contract. The token address is taken from the path.","examples":[{"schedule":"0x5FbDB2315678afecb367f032d93F642f64180aa3","walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"}}]},"TokenLifecycleMutationBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"}},"additionalProperties":false},"AssetAmount_4":{"type":"string","pattern":"^[0-9]+$","description":"Amount of tokens to redeem, as an integer decimal string in token base units. Required when redeemAll is false.","examples":["5000000000000000000000"]},"IssuanceRunMemberSelector":{"type":"object","properties":{"runId":{"type":"string","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$","format":"uuid"},"memberId":{"type":"string","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$","format":"uuid"}},"required":["runId","memberId"],"additionalProperties":false,"description":"The accepted issuance run member this create deploys. The member deploys from the run's reviewed values, not from this body."},"TokenFeatureConfigsInput":{"type":"object","properties":{"historical-balances":{"$ref":"#/components/schemas/EmptyTokenFeatureConfig"},"voting-power":{"$ref":"#/components/schemas/EmptyTokenFeatureConfig"},"permit":{"$ref":"#/components/schemas/EmptyTokenFeatureConfig"},"aum-fee":{"type":"object","properties":{"feeBps":{"$ref":"#/components/schemas/FeeRateBps"},"managementFeeBps":{"$ref":"#/components/schemas/FeeRateBps"},"recipient":{"$ref":"#/components/schemas/EvmAddress"}},"additionalProperties":false},"maturity-redemption":{"type":"object","properties":{"maturityDate":{"$ref":"#/components/schemas/TimestampEncoded"},"denominationAsset":{"$ref":"#/components/schemas/EvmAddress"},"faceValue":{"$ref":"#/components/schemas/AssetAmount"},"treasury":{"$ref":"#/components/schemas/EvmAddress"}},"required":["denominationAsset","faceValue"],"additionalProperties":false},"fixed-treasury-yield":{"type":"object","properties":{"denominationAsset":{"$ref":"#/components/schemas/EvmAddress"},"basisPerUnit":{"$ref":"#/components/schemas/AssetAmount"},"treasury":{"$ref":"#/components/schemas/EvmAddress"},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"endDate":{"$ref":"#/components/schemas/TimestampEncoded"},"rate":{"$ref":"#/components/schemas/BasisPoints_1"},"interval":{"anyOf":[{"$ref":"#/components/schemas/TimeInterval_1"},{"type":"integer","exclusiveMinimum":0}]}},"required":["denominationAsset","basisPerUnit","rate","interval"],"additionalProperties":false},"dividend-yield":{"type":"object","properties":{"denominationAsset":{"$ref":"#/components/schemas/EvmAddress"},"treasury":{"$ref":"#/components/schemas/EvmAddress"},"defaultClaimDeadlineDays":{"type":"integer","exclusiveMinimum":0}},"required":["denominationAsset"],"additionalProperties":false},"interest-yield":{"type":"object","properties":{"denominationAsset":{"$ref":"#/components/schemas/EvmAddress"},"treasury":{"$ref":"#/components/schemas/EvmAddress"},"annualRateBps":{"type":"integer","minimum":1,"maximum":20000},"startDate":{"$ref":"#/components/schemas/TimestampEncoded"},"daycountConvention":{"type":"string","enum":["continuous","act-360"]}},"required":["denominationAsset","annualRateBps","startDate"],"additionalProperties":false},"transaction-fee":{"$ref":"#/components/schemas/TransactionFeeFeatureConfig"},"transaction-fee-accounting":{"$ref":"#/components/schemas/TransactionFeeFeatureConfig"},"external-transaction-fee":{"type":"object","properties":{"feeToken":{"$ref":"#/components/schemas/EvmAddress"},"mintFee":{"$ref":"#/components/schemas/AssetAmount"},"burnFee":{"$ref":"#/components/schemas/AssetAmount"},"transferFee":{"$ref":"#/components/schemas/AssetAmount"},"recipient":{"$ref":"#/components/schemas/EvmAddress"}},"required":["feeToken"],"additionalProperties":false},"conversion":{"type":"object","properties":{"targetToken":{"$ref":"#/components/schemas/EvmAddress"},"conversionMinter":{"$ref":"#/components/schemas/EvmAddress"},"denominationAsset":{"$ref":"#/components/schemas/EvmAddress"},"discountBps":{"anyOf":[{"type":"integer"},{"type":"null"}]},"capPricePerShareWad":{"$ref":"#/components/schemas/AssetAmount"},"conversionWindowStart":{"$ref":"#/components/schemas/TimestampEncoded"},"conversionWindowEnd":{"$ref":"#/components/schemas/TimestampEncoded"},"minConversionAmount":{"$ref":"#/components/schemas/AssetAmount"},"partialAllowed":{"type":"boolean"},"includeInterestInConversion":{"type":"boolean"},"interestProvider":{"$ref":"#/components/schemas/EvmAddress"},"closeInterestOnConversion":{"type":"boolean"},"debtMethod":{"type":"integer","minimum":0,"maximum":2},"escrowAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["targetToken","denominationAsset"],"additionalProperties":false},"conversion-minter":{"type":"object","properties":{"converters":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"},"maxItems":100},"authorizedConverters":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"},"maxItems":100}},"additionalProperties":false},"distribution-waterfall":{"$ref":"#/components/schemas/DistributionWaterfallCreateConfig"}},"additionalProperties":false},"DistributionWaterfallCreateConfig":{"type":"object","properties":{"denominationAsset":{"$ref":"#/components/schemas/EvmAddress"},"ownRole":{"type":"string","minLength":1},"siblings":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","minLength":1},"token":{"$ref":"#/components/schemas/EvmAddress"}},"required":["role"],"additionalProperties":false},"minItems":2,"maxItems":8},"contributionBasis":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"$ref":"#/components/schemas/AssetAmount"}},"ranks":{"type":"object","properties":{"ordinary":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"integer","minimum":1,"maximum":255}},"byDetermination":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"integer","minimum":1,"maximum":255}}}},"required":["ordinary"],"additionalProperties":false}},"required":["denominationAsset","contributionBasis","ranks"],"additionalProperties":false},"TransactionFeeFeatureConfig":{"type":"object","properties":{"mintFeeBps":{"$ref":"#/components/schemas/FeeRateBps"},"burnFeeBps":{"$ref":"#/components/schemas/FeeRateBps"},"transferFeeBps":{"$ref":"#/components/schemas/FeeRateBps"},"recipient":{"$ref":"#/components/schemas/EvmAddress"}},"additionalProperties":false},"FeeRateBps":{"type":"integer"},"TimeInterval_1":{"type":"string","enum":["HOURLY","DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"Time interval for scheduling"},"BasisPoints_1":{"type":"integer"},"EmptyTokenFeatureConfig":{"type":"object","additionalProperties":false},"InitialTokenPermissions":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/InitialTokenPermission"}},{"type":"null"}]},"InitialTokenPermission":{"type":"object","properties":{"account":{"$ref":"#/components/schemas/EvmAddress"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/AssetAccessControlRole"},"minItems":1}},"required":["account","roles"],"additionalProperties":false},"AssetAccessControlRole":{"type":"string","enum":["admin","custodian","emergency","fundsManager","governance","saleAdmin","supplyManagement"],"description":"Token access-control role to grant or revoke. Accepted values are admin, custodian, emergency, fundsManager, governance, saleAdmin, and supplyManagement.","examples":["supplyManagement"]},"HolderRemovableNotAcknowledgement":{"type":"object","properties":{"accepted":{"type":"boolean","description":"Set to `true` to accept that a holder of an excluded claim can remove that claim from their own identity and pass this rule. Recorded against the acting user, who must not be an impersonated session."}},"required":["accepted"],"additionalProperties":false},"ComplianceModulePairs":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"typeId":{"$ref":"#/components/schemas/ComplianceTypeId_2"},"values":{},"module":{"$ref":"#/components/schemas/EvmAddress"},"scope":{"$ref":"#/components/schemas/ModuleScope_1"}},"required":["typeId","values","module"],"additionalProperties":false}},{"type":"null"}]},"ModuleScope_1":{"type":"object","properties":{"senderInclusion":{"$ref":"#/components/schemas/ModuleScopeSenderInclusion"},"senderExemption":{"$ref":"#/components/schemas/ModuleScopeSenderExemption"},"senderCountryInclusion":{"$ref":"#/components/schemas/ModuleScopeSenderCountryInclusion"},"senderCountryExclusion":{"$ref":"#/components/schemas/ModuleScopeSenderCountryExclusion"},"receiverInclusion":{"$ref":"#/components/schemas/ModuleScopeReceiverInclusion"},"receiverExemption":{"$ref":"#/components/schemas/ModuleScopeReceiverExemption"},"receiverCountryInclusion":{"$ref":"#/components/schemas/ModuleScopeReceiverCountryInclusion"},"receiverCountryExclusion":{"$ref":"#/components/schemas/ModuleScopeReceiverCountryExclusion"},"executionMode":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"additionalProperties":false},"ModuleScopeReceiverCountryExclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"}},{"type":"null"}]},"ModuleScopeReceiverCountryInclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"}},{"type":"null"}]},"ModuleScopeReceiverExemption":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExpressionNodeWithGroups_1"}},{"type":"null"}]},"ExpressionNodeWithGroups_1":{"anyOf":[{"$ref":"#/components/schemas/ExpressionNode_1"},{"$ref":"#/components/schemas/ExpressionGroupOpen_1"},{"$ref":"#/components/schemas/ExpressionGroupClose_1"}]},"ExpressionGroupClose_1":{"type":"string","enum":[")"]},"ExpressionGroupOpen_1":{"type":"string","enum":["("]},"ExpressionNode_1":{"type":"object","properties":{"nodeType":{"$ref":"#/components/schemas/ExpressionType_1"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false},"ExpressionType_1":{"type":"number","enum":[0,1,2,3],"description":"Expression type identifier"},"ModuleScopeReceiverInclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExpressionNodeWithGroups_1"}},{"type":"null"}]},"ModuleScopeSenderCountryExclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"}},{"type":"null"}]},"ModuleScopeSenderCountryInclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumericEncoded_3"}},{"type":"null"}]},"ModuleScopeSenderExemption":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExpressionNodeWithGroups_1"}},{"type":"null"}]},"ModuleScopeSenderInclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExpressionNodeWithGroups_1"}},{"type":"null"}]},"RealEstatePropertyUse":{"type":"string","enum":["RESIDENTIAL","COMMERCIAL","INDUSTRIAL","AGRICULTURAL","INSTITUTIONAL","MIXED_USE","RETAIL","OFFICE","HOSPITALITY","HEALTHCARE","EDUCATIONAL","RELIGIOUS","RECREATIONAL","CULTURAL","STORAGE","PARKING","TRANSPORTATION","UTILITIES","GOVERNMENTAL","PUBLIC_SPACE","DEVELOPMENT","VACANT","UNAVAILABLE","PUBLIC_SERVICES","PUBLIC_FACILITIES_TRANSPORTATION","ANCIENT_URBAN_REGION","VACANT_LAND","PLANS_AND_SYMBOLS","MANSION_USE","OTHER"],"description":"Usage classification of property"},"RealEstatePropertyType":{"type":"string","enum":["EMPTY_LAND","AGRICULTURAL_LAND","RESIDENTIAL_LAND","COMMERCIAL_LAND","INDUSTRIAL_LAND","SINGLE_FAMILY_HOUSE","VILLA","TOWNHOUSE","APARTMENT","CONDOMINIUM","OFFICE_BUILDING","RETAIL_SPACE","SHOPPING_MALL","WAREHOUSE","INDUSTRIAL_BUILDING","HOTEL","RESORT","HOSPITAL","CLINIC","SCHOOL","UNIVERSITY","SPORTS_FACILITY","PARKING_FACILITY","MIXED_USE_BUILDING","PLACE_OF_WORSHIP","GOVERNMENT_BUILDING","UNDER_CONSTRUCTION","OTHER"],"description":"Type of real estate property"},"FundCategory":{"type":"string","enum":["ACTIVIST","COMMODITY_TRADING","CONVERTIBLE_ARBITRAGE","CREDIT","CURRENCY_FX","DISTRESSED_DEBT","EMERGING_MARKETS","EQUITY_HEDGE","EVENT_DRIVEN","FIXED_INCOME_ARBITRAGE","FUND_OF_FUNDS","GLOBAL_MACRO","HIGH_FREQUENCY_TRADING","MANAGED_FUTURES_CTA","MARKET_NEUTRAL","MERGER_ARBITRAGE","MULTI_STRATEGY","PRIVATE_EQUITY","VENTURE_CAPITAL"],"description":"Category of investment fund"},"FundClass":{"type":"string","enum":["ABSOLUTE_RETURN","CORE_BLEND","DIVERSIFIED","EARLY_STAGE","FACTOR_BASED","GROWTH_FOCUSED","INCOME_FOCUSED","LARGE_CAP","LONG_EQUITY","LONG_SHORT_EQUITY","MARKET_NEUTRAL","MID_CAP","MOMENTUM_ORIENTED","OPPORTUNISTIC","PRE_SERIES_B","QUANTITATIVE_ALGORITHMIC","REGIONAL","SECTOR_SPECIFIC","SEED_PRE_SEED","SERIES_B_LATE_STAGE","SHORT_EQUITY","SMALL_CAP","TACTICAL_ASSET_ALLOCATION","VALUE_FOCUSED"],"description":"Class of investment fund"},"EquityCategory":{"type":"string","enum":["COMMON_EQUITY","VOTING_COMMON_STOCK","NON_VOTING_COMMON_STOCK","CUMULATIVE_PREFERRED_STOCK","NON_CUMULATIVE_PREFERRED_STOCK","CONVERTIBLE_PREFERRED_STOCK","REDEEMABLE_PREFERRED_STOCK","LARGE_CAP_EQUITY","MID_CAP_EQUITY","SMALL_CAP_EQUITY","MICRO_CAP_EQUITY","DOMESTIC_EQUITY","INTERNATIONAL_EQUITY","GLOBAL_EQUITY","EMERGING_MARKET_EQUITY","FRONTIER_MARKET_EQUITY","TECHNOLOGY","FINANCIALS","HEALTHCARE","ENERGY","CONSUMER_STAPLES","CONSUMER_DISCRETIONARY","INDUSTRIALS","MATERIALS","UTILITIES","COMMUNICATION_SERVICES","REAL_ESTATE","GROWTH_EQUITY","VALUE_EQUITY","BLEND_EQUITY","INCOME_EQUITY","VENTURE_CAPITAL","GROWTH_CAPITAL","LEVERAGED_BUYOUTS","MEZZANINE_FINANCING","DISTRESSED_EQUITY","RESTRICTED_STOCK","ESOP_SHARES","TRACKING_STOCKS","DUAL_CLASS_SHARES"],"description":"Category of equity"},"EquityClass":{"type":"string","enum":["COMMON_EQUITY","PREFERRED_EQUITY","MARKET_CAPITALIZATION_EQUITY","GEOGRAPHIC_EQUITY","SECTOR_INDUSTRY_EQUITY","INVESTMENT_STYLE_EQUITY","INVESTMENT_STAGE_PRIVATE_EQUITY","SPECIAL_CLASSES_EQUITY"],"description":"Class of equity"},"DenominationAssetList":{"type":"array","items":{"$ref":"#/components/schemas/DenominationAsset"},"description":"Bonds that use the selected token as their denomination. The list is indexed.","examples":[[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"EUR","totalSupply":"2500000.00","totalSupplyExact":"2500000000000000000000000","smartInterface":2,"pausable":{"paused":false},"tokenFactory":{"id":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0"}}]]},"DenominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"type":{"$ref":"#/components/schemas/AssetTypeOrSlug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"The name of the token","examples":["Acme Growth Bond"]},"symbol":{"type":"string","description":"The symbol of the token","examples":["ACME25"]},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned URL for the token's brand logo, or null when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal_7"},"basePriceCurrencyCode":{"anyOf":[{"$ref":"#/components/schemas/FiatCurrency"},{"type":"null"}],"description":"The base price currency code of the token"},"totalSupply":{"$ref":"#/components/schemas/BigDecimal_8"},"totalSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, null = unknown."},"pausable":{"$ref":"#/components/schemas/TokenPausable"}},"required":["id","tokenFactory","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","smartInterface","pausable"],"additionalProperties":false,"description":"One bond that uses the selected token as its denomination asset.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"EUR","totalSupply":"2500000.00","totalSupplyExact":"2500000000000000000000000","smartInterface":2,"pausable":{"paused":false},"tokenFactory":{"id":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0"}}]},"BigDecimal_8":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["1250000.5"]},"BigDecimal_7":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["100.00"]},"TokenComplianceResponse":{"type":"object","properties":{"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"complianceModule":{"type":"object","properties":{"typeId":{"type":"string","description":"Compliance module type, such as `country-allow-list-v2`.","examples":["country-allow-list-v2"]},"tokenConfigs":{"type":"array","items":{"type":"object","properties":{"parameters":{"$ref":"#/components/schemas/TokenComplianceParameters"}},"required":["parameters"],"additionalProperties":false},"description":"Encoded parameters for this module on the token."}},"required":["typeId","tokenConfigs"],"additionalProperties":false},"instanceAddress":{"$ref":"#/components/schemas/EvmAddress"},"isActive":{"type":"boolean","description":"Whether this v2 instance is active. Omitted for v1 modules."},"scope":{"$ref":"#/components/schemas/ModuleScopeResponse"},"isGlobal":{"type":"boolean","description":"Whether this module is inherited from the system. Omitted for v1 modules."}},"required":["complianceModule"],"additionalProperties":false},"description":"Compliance modules currently bound to the token."}},"required":["complianceModuleConfigs"],"additionalProperties":false,"description":"Indexed compliance modules bound to the token, including encoded parameters. v2 modules also include instance address, active flag, and scope.","examples":[{"complianceModuleConfigs":[{"complianceModule":{"typeId":"country-allow-list-v2","tokenConfigs":[{"parameters":{"expression":null,"collateral":null,"tokenSupplyLimit":null,"issuanceVolumeLimit":null,"capitalRaiseLimit":null,"minimumHolding":null,"claimExpiry":null,"investorCount":null,"countries":[56],"addresses":null,"timeLock":null,"transferApproval":null}}]},"instanceAddress":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","isActive":true,"isGlobal":false}]}]},"ModuleScopeResponse":{"type":"object","properties":{"senderInclusion":{"type":"array","items":{"$ref":"#/components/schemas/ComplianceModuleScopeExpressionNode"}},"senderExemption":{"type":"array","items":{"$ref":"#/components/schemas/ComplianceModuleScopeExpressionNode"}},"senderCountryInclusion":{"type":"array","items":{"type":"number"}},"senderCountryExclusion":{"type":"array","items":{"type":"number"}},"receiverInclusion":{"type":"array","items":{"$ref":"#/components/schemas/ComplianceModuleScopeExpressionNode"}},"receiverExemption":{"type":"array","items":{"$ref":"#/components/schemas/ComplianceModuleScopeExpressionNode"}},"receiverCountryInclusion":{"type":"array","items":{"type":"number"}},"receiverCountryExclusion":{"type":"array","items":{"type":"number"}},"tokenInclusion":{"type":"array","items":{"$ref":"#/components/schemas/ComplianceModuleScopeExpressionNode"}},"tokenExemption":{"type":"array","items":{"$ref":"#/components/schemas/ComplianceModuleScopeExpressionNode"}},"executionMode":{"type":"number"}},"required":["senderInclusion","senderExemption","senderCountryInclusion","senderCountryExclusion","receiverInclusion","receiverExemption","receiverCountryInclusion","receiverCountryExclusion","tokenInclusion","tokenExemption","executionMode"],"additionalProperties":false,"description":"v2 instance scope. Omitted for v1 modules."},"ComplianceModuleScopeExpressionNode":{"type":"object","properties":{"nodeType":{"type":"number"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false},"TokenComplianceParameters":{"type":"object","properties":{"expression":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TokenComplianceExpressionNode"}},{"type":"null"}]},"collateral":{"anyOf":[{"type":"object","properties":{"proofTopic":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"ratioBps":{"$ref":"#/components/schemas/BasisPoints"},"trustedIssuers":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}},"required":["proofTopic","ratioBps","trustedIssuers"],"additionalProperties":false},{"type":"null"}]},"tokenSupplyLimit":{"anyOf":[{"type":"object","properties":{"global":{"type":"boolean"},"maxSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["global","maxSupplyExact"],"additionalProperties":false},{"type":"null"}]},"issuanceVolumeLimit":{"anyOf":[{"type":"object","properties":{"maxSupply":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"periodLength":{"type":"integer"},"rolling":{"type":"boolean"}},"required":["maxSupply","periodLength","rolling"],"additionalProperties":false},{"type":"null"}]},"capitalRaiseLimit":{"anyOf":[{"type":"object","properties":{"maxSupply":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"periodLength":{"type":"integer"},"rolling":{"type":"boolean"},"priceResolver":{"$ref":"#/components/schemas/EvmAddress"},"priceTopicId":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["maxSupply","periodLength","rolling","priceResolver","priceTopicId"],"additionalProperties":false},{"type":"null"}]},"minimumHolding":{"anyOf":[{"type":"object","properties":{"minimumHolding":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"exemptWallets":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}},"required":["minimumHolding","exemptWallets"],"additionalProperties":false},{"type":"null"}]},"claimExpiry":{"anyOf":[{"type":"object","properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"gracePeriod":{"type":"integer"},"requireExpiry":{"type":"boolean"}},"required":["topics","gracePeriod","requireExpiry"],"additionalProperties":false},{"type":"null"}]},"investorCount":{"anyOf":[{"type":"object","properties":{"maxInvestors":{"type":"integer"},"countingPolicy":{"type":"string","enum":["lifetime","current-holders"]},"global":{"type":"boolean"},"countryCodes":{"type":"array","items":{"$ref":"#/components/schemas/InvestorCountCountryCode"}},"countryLimits":{"type":"array","items":{"type":"integer"}},"topicFilter":{"type":"array","items":{"$ref":"#/components/schemas/TokenComplianceExpressionNode"}}},"required":["maxInvestors"],"additionalProperties":false},{"type":"null"}]},"countries":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumeric_1"}},{"type":"null"}]},"addresses":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}},{"type":"null"}]},"timeLock":{"anyOf":[{"type":"object","properties":{"holdPeriod":{"type":"integer"},"allowExemptions":{"type":"boolean"}},"required":["holdPeriod","allowExemptions"],"additionalProperties":false},{"type":"null"}]},"transferApproval":{"anyOf":[{"type":"object","properties":{"approvalAuthorities":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}},"approvalMode":{"type":"integer"},"approvalExpiry":{"type":"integer"}},"required":["approvalAuthorities"],"additionalProperties":false},{"type":"null"}]}},"required":["expression","collateral","tokenSupplyLimit","issuanceVolumeLimit","capitalRaiseLimit","minimumHolding","claimExpiry","investorCount","countries","addresses","timeLock","transferApproval"],"additionalProperties":false},"ISOCountryCodeNumeric_1":{"anyOf":[{"type":"string","pattern":"^\\d{1,3}$"},{"type":"number","multipleOf":1,"minimum":0,"maximum":999}]},"TokenComplianceExpressionNode":{"type":"object","properties":{"topicScheme":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false},{"type":"null"}]},"index":{"type":"integer"},"nodeType":{"$ref":"#/components/schemas/ExpressionTypeKey"}},"required":["topicScheme","index","nodeType"],"additionalProperties":false},"ExpressionTypeKey":{"type":"string","enum":["TOPIC","AND","OR","NOT"],"description":"Expression type key identifier"},"InvestorCountCountryCode":{"type":"integer","minimum":0,"maximum":65535},"BasisPoints":{"type":"integer"},"EventsResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/Event"},"description":"Indexed events for the token, newest first unless you send another order."}},"required":["events"],"additionalProperties":false,"description":"Frozen v1 event history. Filter by sender, wallet, hash, or date. Do not send both walletAddress and senderAddress.","examples":[{"events":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3","eventName":"Transfer","txIndex":"3","blockNumber":"21450881","blockTimestamp":"2026-03-04T09:12:41.000Z","transactionHash":"0x2a8f0d4c1b6e39a7c05d8f21b4e7a63c9d0f5b18e24a7c36d91b0f8e5a3c7d24","emitter":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"sender":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"metaTxSigner":null,"displaySender":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"relayerKind":null,"relayer":null,"userOpHash":null,"involved":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}],"values":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3-from","name":"from","value":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3-to","name":"to","value":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3-value","name":"value","value":"25000000000000000000000"}]}]}]},"Event":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the event","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3"]},"eventName":{"type":"string","description":"The name of the event","examples":["Transfer","Mint","Burn"]},"txIndex":{"type":"string","description":"Transaction index","examples":["0","1","5"]},"blockNumber":{"type":"string","description":"Block number when the event occurred","examples":["12345678","20000000"]},"blockTimestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"transactionHash":{"type":"string","description":"Transaction hash","examples":["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]},"emitter":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"sender":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"metaTxSigner":{"$ref":"#/components/schemas/ActivityMetaTransactionSigner"},"displaySender":{"$ref":"#/components/schemas/ActivityDisplaySender"},"relayerKind":{"anyOf":[{"type":"string","description":"Relayer type that submitted the meta-transaction.","examples":["user-operation","forwarder"]},{"type":"null"}],"description":"Relayer type that submitted the meta-transaction.","examples":["user-operation","forwarder"]},"relayer":{"$ref":"#/components/schemas/ActivityRelayer"},"userOpHash":{"anyOf":[{"$ref":"#/components/schemas/EthereumHashEncoded"},{"type":"null"}],"description":"UserOperation hash from the ERC-4337 EntryPoint."},"paymaster":{"$ref":"#/components/schemas/ActivityPaymaster"},"actualGasCost":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"EntryPoint-charged gas cost in wei for this UserOperation.","examples":["128054388000000"]},"involved":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false}},"values":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/EventValue"},"description":"Decoded event parameters such as `from`, `to`, and `value`.","examples":[[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3-from","name":"from","value":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}]]},{"type":"null"}]}},"required":["id","eventName","txIndex","blockNumber","blockTimestamp","transactionHash","emitter","sender","metaTxSigner","displaySender","relayerKind","relayer","userOpHash","involved"],"additionalProperties":false},"EventValue":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the event value","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F-42-3-from"]},"name":{"type":"string","description":"Name of the event parameter","examples":["from","to","amount"]},"value":{"type":"string","description":"Value of the event parameter","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F","1000000000000000000"]}},"required":["id","name","value"],"additionalProperties":false},"ActivityPaymaster":{"anyOf":[{"$ref":"#/components/schemas/ActivityPaymasterAddress"},{"type":"null"}],"description":"Paymaster that sponsored the UserOperation's gas."},"ActivityPaymasterAddress":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Paymaster that sponsored the UserOperation's gas."},"ActivityRelayer":{"anyOf":[{"$ref":"#/components/schemas/ActivityRelayerAddress"},{"type":"null"}],"description":"Relayer EOA that submitted the meta-transaction."},"ActivityRelayerAddress":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Relayer EOA that submitted the meta-transaction."},"ActivityDisplaySender":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Canonical originator address."},"ActivityMetaTransactionSigner":{"anyOf":[{"$ref":"#/components/schemas/ActivityMetaTransactionSignerAddress"},{"type":"null"}],"description":"EOA attribution for meta-transactions (ERC-2771 or ERC-4337). Null for directly-submitted transactions or events indexed before AA attribution was available."},"ActivityMetaTransactionSignerAddress":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"EOA attribution for meta-transactions (ERC-2771 or ERC-4337). Null for directly-submitted transactions or events indexed before AA attribution was available."},"TimestampEncoded_4":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"}]},"TokenAllowanceResponse":{"type":"object","properties":{"allowance":{"anyOf":[{"$ref":"#/components/schemas/TokenAllowance"},{"type":"null"}],"description":"The indexed allowance, or null when this owner has not granted this spender an allowance."}},"required":["allowance"],"additionalProperties":false,"description":"Allowance for one owner and spender. `allowance` is null when no approval is indexed. The read does not change approvals.","examples":[{"allowance":{"id":"9c2e1f44-6a7b-4d8e-91c0-2b3d4e5f6a70","value":"10000.00","valueExact":"10000000000000000000000","lastUpdatedAt":"2026-03-11T16:02:08.000Z","owner":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false},"spender":{"id":"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC","isContract":false}}}]},"TokenAllowance":{"type":"object","properties":{"id":{"type":"string","description":"Stable identifier of this token, owner, and spender triple.","examples":["9c2e1f44-6a7b-4d8e-91c0-2b3d4e5f6a70"]},"value":{"$ref":"#/components/schemas/BigDecimal"},"valueExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"lastUpdatedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"owner":{"$ref":"#/components/schemas/AccessControlAccount_3"},"spender":{"$ref":"#/components/schemas/AccessControlAccount_4"}},"required":["id","value","valueExact","lastUpdatedAt","owner","spender"],"additionalProperties":false,"description":"One indexed allowance from an owner to a spender.","examples":[{"id":"9c2e1f44-6a7b-4d8e-91c0-2b3d4e5f6a70","value":"10000.00","valueExact":"10000000000000000000000","lastUpdatedAt":"2026-03-11T16:02:08.000Z","owner":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30","isContract":false},"spender":{"id":"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC","isContract":false}}]},"AccessControlAccount_4":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false,"description":"Wallet or contract allowed to spend the owner's tokens."},"AccessControlAccount_3":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false,"description":"Wallet that granted the allowance."},"TokenHoldersResponse":{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"balances":{"type":"array","items":{"$ref":"#/components/schemas/TokenV1AssetBalance"},"description":"Holder balances ordered by last update time. Spendable funds are in `available`."}},"required":["balances"],"additionalProperties":false},{"type":"null"}]},"totalCount":{"type":"integer"}},"required":["token","totalCount"],"additionalProperties":false,"description":"Frozen v1 holder list. `totalCount` is the number of holders, not only the rows in `token.balances`. `token` is null when the token has no indexed holders.","examples":[{"token":{"balances":[{"account":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"available":"25000.00","frozen":"0","isFrozen":false,"value":"25000.00","lastUpdatedAt":"2026-03-11T16:02:08.000Z"}]},"totalCount":12}]},"TokenV1AssetBalance":{"type":"object","properties":{"account":{"$ref":"#/components/schemas/AssetBalanceAccount"},"available":{"$ref":"#/components/schemas/BigDecimal"},"frozen":{"$ref":"#/components/schemas/BigDecimal"},"isFrozen":{"type":"boolean"},"value":{"$ref":"#/components/schemas/BigDecimal"},"lastUpdatedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["account","available","frozen","isFrozen","value","lastUpdatedAt"],"additionalProperties":false,"description":"Indexed holder balance. Spend checks must read `available`, not `value`. `isFrozen` is an account-level flag.","examples":[{"account":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"available":"25000.00","frozen":"0","isFrozen":false,"value":"25000.00","lastUpdatedAt":"2026-03-11T16:02:08.000Z"}]},"AssetBalanceAccount":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"TokenHolderResponse":{"type":"object","properties":{"holder":{"anyOf":[{"$ref":"#/components/schemas/TokenV1AssetBalance"},{"type":"null"}],"description":"The holder's balance information, null if holder not found"}},"required":["holder"],"additionalProperties":false,"description":"Balance for one holder. `holder` is null when the address has no indexed balance. Spend checks must read `available`, not `value`.","examples":[{"holder":{"account":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"available":"25000.00","frozen":"0","isFrozen":false,"value":"25000.00","lastUpdatedAt":"2026-03-11T16:02:08.000Z"}}]},"Token_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"$ref":"#/components/schemas/EvmAddress"},"complianceContract":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The per-token SMARTCompliance contract address that hosts this token's compliance modules. Null when not yet indexed."},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"The most recently indexed per-token identity registry contract that controls which addresses are eligible to hold this token."},"type":{"$ref":"#/components/schemas/AssetTypeOrSlug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"The name of the token","examples":["Acme Growth Bond"]},"symbol":{"type":"string","description":"The symbol of the token","examples":["ACME25"]},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned URL for the token's brand logo, or null when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal_5"},"basePriceCurrencyCode":{"anyOf":[{"$ref":"#/components/schemas/FiatCurrency"},{"type":"null"}],"description":"The base price currency code of the token"},"totalSupply":{"$ref":"#/components/schemas/BigDecimal_6"},"totalSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"extensions":{"$ref":"#/components/schemas/AssetExtensionArray_2"},"implementsERC3643":{"type":"boolean","description":"Whether the token implements ERC3643"},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, null = unknown."},"implementsSMART":{"type":"boolean","description":"Whether the token implements SMART"},"identity":{"$ref":"#/components/schemas/TokenIdentity_1"},"pausable":{"$ref":"#/components/schemas/TokenPausable"},"collateral":{"anyOf":[{"type":"object","properties":{"collateral":{"anyOf":[{"$ref":"#/components/schemas/BigDecimal"},{"type":"null"}]},"collateralExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"expiryTimestamp":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"The expiry timestamp of the collateral"}},"required":["expiryTimestamp"],"additionalProperties":false},{"type":"null"}],"description":"The collateral of the token"},"capped":{"anyOf":[{"type":"object","properties":{"cap":{"$ref":"#/components/schemas/BigDecimal"},"capExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["cap","capExact"],"additionalProperties":false},{"type":"null"}],"description":"The max supply of the token"},"createdBy":{"$ref":"#/components/schemas/AddressRef_1"},"redeemable":{"anyOf":[{"type":"object","properties":{"redeemedAmount":{"$ref":"#/components/schemas/BigDecimal"},"redeemedAmountExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["redeemedAmount"],"additionalProperties":false},{"type":"null"}],"description":"The amount of tokens redeemed"},"yield":{"anyOf":[{"type":"object","properties":{"schedule":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"denominationAsset":{"$ref":"#/components/schemas/RuntimeDenominationAsset"}},"required":["id","denominationAsset"],"additionalProperties":false},{"type":"null"}]}},"required":["schedule"],"additionalProperties":false},{"type":"null"}],"description":"The yield of the token"},"bond":{"anyOf":[{"type":"object","properties":{"faceValue":{"$ref":"#/components/schemas/BigDecimal"},"faceValueExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"isMatured":{"type":"boolean","description":"Whether the bond is matured"},"maturityDate":{"$ref":"#/components/schemas/TimestampEncoded"},"totalRedeemed":{"$ref":"#/components/schemas/BigDecimal"},"totalRedeemedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"denominationAsset":{"$ref":"#/components/schemas/RuntimeDenominationAsset"}},"required":["faceValue","faceValueExact","isMatured","maturityDate","totalRedeemed","totalRedeemedExact","denominationAsset"],"additionalProperties":false},{"type":"null"}],"description":"The bond of the token"},"fund":{"anyOf":[{"type":"object","properties":{"managementFeeBps":{"$ref":"#/components/schemas/BigDecimal"}},"required":["managementFeeBps"],"additionalProperties":false},{"type":"null"}],"description":"The fund of the token"},"accessControl":{"$ref":"#/components/schemas/AccessControl_2"},"complianceModuleConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"type":"object","properties":{"typeId":{"$ref":"#/components/schemas/ComplianceTypeId_2"}},"required":["typeId"],"additionalProperties":false}},"required":["id","complianceModule"],"additionalProperties":false},"description":"Enabled compliance modules for this token"},"userPermissions":{"type":"object","properties":{"roles":{"type":"object","properties":{"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"custodian":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"emergency":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"fundsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"governance":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"saleAdmin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"supplyManagement":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false,"description":"The roles of the user for the token"},"actions":{"$ref":"#/components/schemas/TokenPermissionActions_1"}},"required":["roles","actions"],"additionalProperties":false,"description":"The permissions of the user for the token"},"stats":{"anyOf":[{"type":"object","properties":{"balancesCount":{"type":"number","description":"The number of accounts holding this token"},"totalValueInBaseCurrency":{"$ref":"#/components/schemas/BigDecimal"},"totalBurned":{"$ref":"#/components/schemas/BigDecimal"},"totalBurnedExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["balancesCount","totalValueInBaseCurrency","totalBurned","totalBurnedExact"],"additionalProperties":false},{"type":"null"}],"description":"The stats of the token"}},"required":["id","tokenFactory","complianceContract","identityRegistry","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","extensions","implementsERC3643","smartInterface","implementsSMART","pausable","collateral","capped","createdBy","redeemable","yield","bond","fund","complianceModuleConfigs","stats"],"additionalProperties":false,"description":"The selected token as the frozen v1 surface returns it. Amounts are decimal strings in token units. This read is idempotent.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0","complianceContract":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","identityRegistry":"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9","type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"EUR","totalSupply":"2500000.00","totalSupplyExact":"2500000000000000000000000","extensions":["ACCESS_MANAGED","BOND","CAPPED","REDEEMABLE"],"implementsERC3643":true,"smartInterface":2,"implementsSMART":true,"pausable":{"paused":false},"collateral":null,"capped":{"cap":"5000000.00","capExact":"5000000000000000000000000"},"createdBy":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"redeemable":{"redeemedAmount":"0","redeemedAmountExact":"0"},"yield":null,"bond":{"faceValue":"100.00","faceValueExact":"100000000000000000000","isMatured":false,"maturityDate":"2029-03-04T00:00:00.000Z","totalRedeemed":"0","totalRedeemedExact":"0","denominationAsset":{"id":"0x5FbDB2315678afecb367f032d93F642f64180aa3","symbol":"EURC","decimals":6}},"fund":null,"complianceModuleConfigs":[],"stats":{"balancesCount":12,"totalValueInBaseCurrency":"250000000.00","totalBurned":"0","totalBurnedExact":"0"}}]},"TokenPermissionActions_1":{"type":"object","properties":{"burn":{"type":"boolean"},"grantRole":{"type":"boolean"},"grantRoleByParticipant":{"type":"boolean"},"revokeRole":{"type":"boolean"},"revokeRoleByParticipant":{"type":"boolean"},"mint":{"type":"boolean"},"pause":{"type":"boolean"},"addComplianceModule":{"type":"boolean"},"approve":{"type":"boolean"},"forcedRecover":{"type":"boolean"},"freezeAddress":{"type":"boolean"},"recoverERC20":{"type":"boolean"},"recoverTokens":{"type":"boolean"},"redeem":{"type":"boolean"},"mature":{"type":"boolean"},"removeComplianceModule":{"type":"boolean"},"setCap":{"type":"boolean"},"setComplianceModuleParams":{"type":"boolean"},"setYieldSchedule":{"type":"boolean"},"topUpDenominationAsset":{"type":"boolean"},"withdrawDenominationAsset":{"type":"boolean"},"transfer":{"type":"boolean"},"forcedTransfer":{"type":"boolean"},"unpause":{"type":"boolean"},"updateCollateral":{"type":"boolean"},"freezePartial":{"type":"boolean"},"unfreezePartial":{"type":"boolean"},"claimIssue":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"setMetadata":{"type":"boolean"},"removeMetadata":{"type":"boolean"},"setAumFeeBps":{"type":"boolean"},"setAumFeeRecipient":{"type":"boolean"},"approveTransfer":{"type":"boolean"},"revokeTransferApproval":{"type":"boolean"},"collectAumFee":{"type":"boolean"},"freezeAumFeeRate":{"type":"boolean"},"claimYield":{"type":"boolean"},"setYieldTreasury":{"type":"boolean"},"matureEarly":{"type":"boolean"},"setMaturityTreasury":{"type":"boolean"},"topUpMaturityTreasury":{"type":"boolean"},"topUpYieldTreasury":{"type":"boolean"},"topUpBondDenomination":{"type":"boolean"},"setTransactionFeeRates":{"type":"boolean"},"setTransactionFeeRecipient":{"type":"boolean"},"freezeTransactionFeeRates":{"type":"boolean"},"setExternalTransactionFees":{"type":"boolean"},"setExternalTransactionFeeRecipient":{"type":"boolean"},"setExternalTransactionFeeToken":{"type":"boolean"},"freezeExternalTransactionFees":{"type":"boolean"},"setTransactionFeeAccountingRates":{"type":"boolean"},"setTransactionFeeAccountingRecipient":{"type":"boolean"},"freezeTransactionFeeAccountingRates":{"type":"boolean"},"reconcileFees":{"type":"boolean"},"setFeeExemption":{"type":"boolean"},"delegate":{"type":"boolean"},"delegateBySig":{"type":"boolean"},"permit":{"type":"boolean"},"publishTrigger":{"type":"boolean"},"disableTrigger":{"type":"boolean"},"setConversionWindow":{"type":"boolean"},"convert":{"type":"boolean"},"forceConvert":{"type":"boolean"},"addAuthorizedConverter":{"type":"boolean"},"removeAuthorizedConverter":{"type":"boolean"},"addHoldReserver":{"type":"boolean"},"removeHoldReserver":{"type":"boolean"},"setPrice":{"type":"boolean"},"featureAttach":{"type":"boolean"},"featureDetach":{"type":"boolean"},"featureRotate":{"type":"boolean"}},"required":["burn","grantRole","grantRoleByParticipant","revokeRole","revokeRoleByParticipant","mint","pause","addComplianceModule","approve","forcedRecover","freezeAddress","recoverERC20","recoverTokens","redeem","mature","removeComplianceModule","setCap","setComplianceModuleParams","setYieldSchedule","topUpDenominationAsset","withdrawDenominationAsset","transfer","forcedTransfer","unpause","updateCollateral","freezePartial","unfreezePartial","claimIssue","claimRevoke","setMetadata","removeMetadata","setAumFeeBps","setAumFeeRecipient","approveTransfer","revokeTransferApproval","collectAumFee","freezeAumFeeRate","claimYield","setYieldTreasury","matureEarly","setMaturityTreasury","topUpMaturityTreasury","topUpYieldTreasury","topUpBondDenomination","setTransactionFeeRates","setTransactionFeeRecipient","freezeTransactionFeeRates","setExternalTransactionFees","setExternalTransactionFeeRecipient","setExternalTransactionFeeToken","freezeExternalTransactionFees","setTransactionFeeAccountingRates","setTransactionFeeAccountingRecipient","freezeTransactionFeeAccountingRates","reconcileFees","setFeeExemption","delegate","delegateBySig","permit","publishTrigger","disableTrigger","setConversionWindow","convert","forceConvert","addAuthorizedConverter","removeAuthorizedConverter","addHoldReserver","removeHoldReserver","setPrice","featureAttach","featureDetach","featureRotate"],"additionalProperties":false,"description":"The actions on the token the user is allowed to execute"},"AccessControl_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"addonRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"admin":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"auditor":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"claimPolicyManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"claimIssuer":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"complianceManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"custodian":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"emergency":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"feedsManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"fundsManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"gasManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"governance":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"identityManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"identityRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"organisationIdentityManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"saleAdmin":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"supplyManagement":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"systemManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"systemModule":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"tokenFactoryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"tokenFactoryRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"tokenManager":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"trustedIssuersMetaRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray_2"},"addonManager":{"anyOf":[{"$ref":"#/components/schemas/AccessControlAccountArray_2"},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"$ref":"#/components/schemas/AccessControlAccountArray_2"},{"type":"null"}]},"roleAdmins":{"anyOf":[{"$ref":"#/components/schemas/AccessControlRoleAdmins_1"},{"type":"null"}]}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false,"description":"The access control of the token"},"AccessControlRoleAdmins_1":{"type":"array","items":{"$ref":"#/components/schemas/AccessControlRoleAdmin_2"}},"AccessControlRoleAdmin_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"$ref":"#/components/schemas/AccessControlRole_2"},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"$ref":"#/components/schemas/AccessControlRole_2"}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false},"AccessControlRole_2":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"AccessControlAccountArray_2":{"type":"array","items":{"$ref":"#/components/schemas/AccessControlAccount_2"}},"AccessControlAccount_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false},"AddressRef_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"The user who created the token","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"TokenIdentity_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"isContract":{"type":"boolean"},"registered":{"$ref":"#/components/schemas/IdentityRegistration_1"},"claims":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/IdentityClaim_1"}},{"type":"null"}]}},"required":["id","account","isContract"],"additionalProperties":false,"description":"Identity associated with this token"},"IdentityClaim_1":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"signature":{"type":"string"},"revoked":{"type":"boolean"},"issuer":{"$ref":"#/components/schemas/ClaimIssuer_1"},"values":{"type":"array","items":{"$ref":"#/components/schemas/ClaimValue_1"}},"isTrusted":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","signature","revoked","issuer","values"],"additionalProperties":false},"ClaimValue_1":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false},"ClaimIssuer_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"account":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]}},"required":["id","account"],"additionalProperties":false},"IdentityRegistration_1":{"anyOf":[{"$ref":"#/components/schemas/IdentityRegistered_1"},{"$ref":"#/components/schemas/IdentityUnregistered_1"}],"description":"Registration state. An object with `isRegistered: true` is ACTIVE. The literal `false` means not registered.","examples":[{"isRegistered":true,"country":"BE"},false]},"IdentityUnregistered_1":{"type":"boolean","enum":[false],"description":"`false` means the identity is not registered in this registry.","examples":[false]},"IdentityRegistered_1":{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true],"description":"Always `true` on this arm. The identity is ACTIVE in the registry.","examples":[true]},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode_2"},{"type":"null"}],"allOf":[{"description":"Country the registry records for the identity, as an ISO 3166-1 alpha-2 code, or `null` when the stored numeric code maps to no country.","examples":["BE"]}]}},"required":["isRegistered","country"],"additionalProperties":false,"description":"Identity is registered and ACTIVE. `country` is the stored ISO alpha-2 code when one is set.","examples":[{"isRegistered":true,"country":"BE"}]},"ISOCountryCode_2":{"type":"string"},"AssetExtensionArray_2":{"type":"array","items":{"$ref":"#/components/schemas/AssetExtension"},"description":"The extensions of the token"},"BigDecimal_6":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["1250000.5"]},"BigDecimal_5":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["100.00"]},"TokenSearchResult_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"anyOf":[{"$ref":"#/components/schemas/TokenSearchFactoryRef_1"},{"type":"null"}]},"type":{"$ref":"#/components/schemas/AssetTypeOrSlug_1"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"Token name.","examples":["Acme Growth Bond"]},"symbol":{"type":"string","description":"Token symbol. May be an empty string when an external-token `symbol()` read failed. Do not assume `AssetSymbol` rules here.","examples":["ACME25",""]},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned logo URL, or `null` when none is uploaded.","examples":["https://cdn.example.com/tokens/acme25.png",null]},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal_3"},"basePriceCurrencyCode":{"anyOf":[{"$ref":"#/components/schemas/FiatCurrency"},{"type":"null"}],"description":"ISO currency of `basePrice`, or `null` when no quote is configured.","examples":["USD",null]},"totalSupply":{"$ref":"#/components/schemas/BigDecimal_4"},"totalSupplyExact":{"type":"string","description":"Raw on-chain total supply as a decimal string.","examples":["1250000500000000000000000"]},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, `null` when unknown.","examples":[2,null]},"pausable":{"$ref":"#/components/schemas/TokenPausable"},"templateLink":{"anyOf":[{"$ref":"#/components/schemas/TokenSearchTemplateLink_1"},{"type":"null"}]}},"required":["id","tokenFactory","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","smartInterface","pausable","templateLink"],"additionalProperties":false,"description":"One token match from search. External tokens may have an empty `symbol` and a null `tokenFactory`. Amounts are decimal-adjusted except `totalSupplyExact`.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":{"id":"0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"},"type":"bond","createdAt":"2026-03-15T14:30:00.000Z","name":"Acme Growth Bond","symbol":"ACME25","logoUrl":"https://cdn.example.com/tokens/acme25.png","decimals":18,"basePrice":"100.00","basePriceCurrencyCode":"USD","totalSupply":"1250000.5","totalSupplyExact":"1250000500000000000000000","smartInterface":2,"pausable":{"paused":false},"templateLink":{"templateId":"tpl_bond_growth_v2","templateSlug":"bond-growth"}}]},"TokenSearchTemplateLink_1":{"type":"object","properties":{"templateId":{"type":"string","description":"Template identifier this token was created from.","examples":["tpl_bond_growth_v2"]},"templateSlug":{"type":"string","description":"Template slug shown in Console URLs.","examples":["bond-growth"]}},"required":["templateId","templateSlug"],"additionalProperties":false},"BigDecimal_4":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["1250000.5"]},"BigDecimal_3":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"A decimal number with arbitrary precision","examples":["1.00"]},"AssetTypeOrSlug_1":{"anyOf":[{"$ref":"#/components/schemas/AssetType"},{"$ref":"#/components/schemas/AssetTypeTemplateSlug"}],"description":"Asset type or custom template slug.","examples":["bond","equity"]},"TokenSearchFactoryRef_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"TokenListResponseSchemaV1":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/TokenListItemSchemaV1"}},"totalCount":{"type":"integer"}},"required":["tokens","totalCount"],"additionalProperties":false,"description":"Frozen v1 token list. `totalCount` is the number of matching tokens, not only the ones in `tokens`. `claims` is always an empty array on this list.","examples":[{"tokens":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","tokenFactory":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0","type":"bond","createdAt":"2026-03-04T09:12:41.000Z","name":"Northwind Coffee Series A Bond","symbol":"NWCAB","decimals":18,"basePrice":"[\"10000\",2]","basePriceCurrencyCode":"EUR","totalSupply":"[\"250000000\",2]","totalSupplyExact":"2500000000000000000000000","smartInterface":2,"pausable":{"paused":false},"assetClassificationType":"bond","assetClassificationCategory":"corporate","uniqueIdentifier":"BE0003796134","templateLink":{"templateId":"tmpl_northwind_series_a","templateSlug":"corporate-bond"},"structure":null,"isConfigurable":true,"hasVotingPower":false,"claims":[]}],"totalCount":1}]},"TokenListItemSchemaV1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"$ref":"#/components/schemas/EvmAddress"},"type":{"$ref":"#/components/schemas/AssetTypeOrSlug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"The name of the token","examples":["Acme Growth Bond"]},"symbol":{"type":"string","description":"The symbol of the token","examples":["ACME25"]},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned URL for the token's brand logo, or null when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePriceCurrencyCode":{"anyOf":[{"$ref":"#/components/schemas/FiatCurrency"},{"type":"null"}],"description":"The base price currency code of the token"},"totalSupplyExact":{"$ref":"#/components/schemas/ApiBigIntEncoded"},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, null = unknown."},"pausable":{"$ref":"#/components/schemas/TokenPausable"},"assetClassificationType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Asset class from the classification claim, such as bond or fund. Null when no claim is indexed.","examples":["bond",null]},"assetClassificationCategory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Classification category, such as corporate. Null when no claim is indexed.","examples":["corporate",null]},"uniqueIdentifier":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public identifier from the unique-identifier claim, such as an ISIN. Null when none is indexed.","examples":["BE0003796134",null]},"templateLink":{"anyOf":[{"type":"object","properties":{"templateId":{"type":"string"},"templateSlug":{"type":"string"}},"required":["templateId","templateSlug"],"additionalProperties":false},{"type":"null"}]},"structure":{"$ref":"#/components/schemas/NullableTokenStructure"},"isConfigurable":{"type":"boolean","description":"Whether the token implements the configurable extension required to attach features","examples":[true]},"hasVotingPower":{"type":"boolean","description":"Whether the voting-power feature is currently attached.","examples":[false]},"basePrice":{"$ref":"#/components/schemas/FrozenV1BigDecimalEncoded"},"totalSupply":{"$ref":"#/components/schemas/FrozenV1BigDecimalEncoded"},"claims":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"revoked":{"type":"boolean"},"values":{"type":"array","items":{"$ref":"#/components/schemas/ClaimValue_1"}}},"required":["id","name","revoked","values"],"additionalProperties":false},"description":"Identity claims for the token (frozen v1-compat; empty in list context)"}},"required":["id","tokenFactory","type","createdAt","name","symbol","decimals","basePriceCurrencyCode","smartInterface","pausable","assetClassificationType","assetClassificationCategory","uniqueIdentifier","templateLink","structure","isConfigurable","hasVotingPower","basePrice","totalSupply","claims"],"additionalProperties":false},"FrozenV1BigDecimalEncoded":{"type":"string"},"NullableTokenStructure":{"anyOf":[{"$ref":"#/components/schemas/TokenStructure"},{"type":"null"}]},"TokenStructure":{"type":"object","properties":{"instanceId":{"type":"string","minLength":1},"structureId":{"type":"string","minLength":1},"slug":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"isSystem":{"type":"boolean"},"role":{"type":"string","pattern":"^[a-z][a-z0-9-]{1,31}$","description":"Slug naming a class inside a multi-class instrument structure. A binding key, never a switch."},"members":{"type":"array","items":{"$ref":"#/components/schemas/TokenStructureMember"}}},"required":["instanceId","structureId","slug","name","description","isSystem","role","members"],"additionalProperties":false,"description":"Deployed multi-class instrument a token belongs to, with every deployed class and its role."},"TokenStructureMember":{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"description":"EVM chain identifier."},"tokenAddress":{"type":"string"},"role":{"type":"string","pattern":"^[a-z][a-z0-9-]{1,31}$","description":"Slug naming a class inside a multi-class instrument structure. A binding key, never a switch."}},"required":["chainId","tokenAddress","role"],"additionalProperties":false,"description":"One deployed token inside a multi-class instrument, with the role it plays there."},"AssetAmount_3":{"type":"string","pattern":"^[0-9]+$","description":"New maximum supply as an integer decimal string in token base units. Must be at least the current total supply.","examples":["100000000000000000000000000"]},"AssetAmount_2":{"type":"string","pattern":"^[0-9]+$","description":"Positive amount to unfreeze, as an integer decimal string in token base units.","examples":["5000000000000000000000"]},"AssetAmount_1":{"type":"string","pattern":"^[0-9]+$","description":"Positive amount to freeze, as an integer decimal string in token base units.","examples":["5000000000000000000000"]},"TokenRevokeRoleByParticipantOutput":{"type":"object","properties":{"accounts":{"$ref":"#/components/schemas/TokenParticipantRoleMutationAccounts"},"roles":{"$ref":"#/components/schemas/TokenParticipantRoles"}},"required":["accounts","roles"],"additionalProperties":false,"description":"Wallets and roles that the participant-scoped grant or revoke applied.","examples":[{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"],"roles":["custodian"]}]},"TokenParticipantRoles":{"type":"array","items":{"$ref":"#/components/schemas/AssetAccessControlRole"},"description":"Roles applied to the resolved wallets.","examples":[["custodian"]]},"TokenParticipantRoleMutationAccounts":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"},"description":"Wallets resolved for the participant that received or lost the role.","examples":[["0x8ba1f109551bD432803012645Ac136ddd64DBA72"]]},"TokenGrantRoleByParticipantBody":{"anyOf":[{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"role":{"$ref":"#/components/schemas/AssetAccessControlRole"},"participantId":{"type":"string","minLength":1,"description":"Participant identifier whose resolved wallets receive or lose the role.","examples":["prt_northwind_ops"]}},"required":["role","participantId"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"role":{"$ref":"#/components/schemas/AssetAccessControlRole"},"identityAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["role","identityAddress"],"additionalProperties":false}],"description":"Grant one token role to every wallet resolved for a participant. Send either participantId or identityAddress. The token address is taken from the path.","examples":[{"role":"custodian","participantId":"prt_northwind_ops","walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"}}]},"TokenGrantRoleByParticipantOutput":{"type":"object","properties":{"accounts":{"$ref":"#/components/schemas/TokenParticipantRoleMutationAccounts"},"roles":{"$ref":"#/components/schemas/TokenParticipantRoles"}},"required":["accounts","roles"],"additionalProperties":false,"description":"Wallets and roles that the participant-scoped grant or revoke applied.","examples":[{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"],"roles":["custodian"]}]},"TokenRevokeRoleOutput":{"type":"object","properties":{"accounts":{"$ref":"#/components/schemas/TokenRoleMutationAccounts"}},"required":["accounts"],"additionalProperties":false,"description":"Accounts that received the requested role grant.","examples":[{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"]}]},"TokenRoleMutationAccounts":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"},"description":"Wallets that received the granted role after settlement.","examples":[["0x8ba1f109551bD432803012645Ac136ddd64DBA72"]]},"TokenGrantRoleBody":{"anyOf":[{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"accounts":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"},"minItems":1},"role":{"$ref":"#/components/schemas/AssetAccessControlRole"}},"required":["accounts","role"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_4"},"account":{"$ref":"#/components/schemas/EvmAddress"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/AssetAccessControlRole"},"minItems":1}},"required":["account","roles"],"additionalProperties":false}],"description":"Grant one role to many accounts, or many roles to one account. The token address is taken from the path.","examples":[{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"],"role":"supplyManagement","walletVerification":{"secretVerificationCode":"123456","verificationType":"PINCODE"}}]},"TokenGrantRoleOutput":{"type":"object","properties":{"accounts":{"$ref":"#/components/schemas/TokenRoleMutationAccounts"}},"required":["accounts"],"additionalProperties":false,"description":"Accounts that received the requested role grant.","examples":[{"accounts":["0x8ba1f109551bD432803012645Ac136ddd64DBA72"]}]},"TokenDocumentDeleteOutput":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the document that was deleted."},"deleted":{"type":"boolean","description":"True when the document is no longer attached to the token."}},"required":["id","deleted"],"additionalProperties":false,"description":"Result of deleting one token document. `deleted` is true when the document is gone."},"TokenDocumentConfirmUploadOutput":{"type":"object","properties":{"id":{"type":"string"},"tokenAddress":{"type":"string"},"documentType":{"$ref":"#/components/schemas/TokenDocumentType"},"visibility":{"$ref":"#/components/schemas/TokenDocumentVisibility"},"groupId":{"type":"string","description":"Document group this version belongs to. Versions of the same file share one group."},"versionNumber":{"type":"number","description":"Monotonic version within the group. Starts at 1."},"isLatest":{"type":"boolean","description":"Whether this is the current version in the group."},"fileName":{"type":"string","description":"Stored file name, including extension."},"fileSize":{"type":"number","description":"Stored file size in bytes."},"mimeType":{"type":"string","description":"Stored MIME type."},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Document title, or `null` when none was supplied."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional summary, or `null` when none was supplied."},"uploadedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"fileHash":{"type":"string"},"uploadedBy":{"type":"string"}},"required":["id","tokenAddress","documentType","visibility","groupId","versionNumber","isLatest","fileName","fileSize","mimeType","title","description","uploadedAt","fileHash","uploadedBy"],"additionalProperties":false,"description":"Document record after the uploaded file is confirmed. The file is now attached to the token."},"TokenDocumentConfirmUploadBody":{"type":"object","properties":{"objectKey":{"type":"string","minLength":1},"documentType":{"$ref":"#/components/schemas/TokenDocumentType"},"fileName":{"type":"string","minLength":1,"maxLength":255,"description":"Original file name, including extension. 1 to 255 characters."},"fileSize":{"type":"integer"},"mimeType":{"type":"string","enum":["application/pdf","image/jpeg","image/png","image/webp","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","text/csv"]},"visibility":{"$ref":"#/components/schemas/TokenDocumentVisibility"},"title":{"anyOf":[{"type":"string","maxLength":500,"description":"Document title shown in Console. At most 500 characters."},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":2000,"description":"Optional summary. At most 2000 characters."},{"type":"null"}]},"replaceGroupId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["objectKey","documentType","fileName","fileSize","mimeType","visibility"],"additionalProperties":false},"TokenDocumentGetUploadUrlOutput":{"type":"object","properties":{"uploadUrl":{"type":"string","description":"Short-lived URL that accepts the file bytes with the returned method and headers."},"objectKey":{"type":"string","description":"Object key to send back when you confirm the upload."},"expiresAt":{"$ref":"#/components/schemas/TimestampEncoded"},"method":{"type":"string","enum":["PUT"],"description":"HTTP method to use against `uploadUrl`."},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Headers that must accompany the upload, including the content type."}},"required":["uploadUrl","objectKey","expiresAt","method","headers"],"additionalProperties":false,"description":"Short-lived upload URL. PUT the file to `uploadUrl`, then confirm the upload with the returned `objectKey`."},"TokenDocumentGetUploadUrlBody":{"type":"object","properties":{"documentType":{"$ref":"#/components/schemas/TokenDocumentType"},"fileName":{"type":"string","minLength":1,"maxLength":255,"description":"Original file name, including extension. 1 to 255 characters."},"fileSize":{"type":"integer"},"mimeType":{"type":"string","enum":["application/pdf","image/jpeg","image/png","image/webp","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","text/csv"]},"visibility":{"$ref":"#/components/schemas/TokenDocumentVisibility"},"title":{"anyOf":[{"type":"string","maxLength":500,"description":"Document title shown in Console. At most 500 characters."},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":2000,"description":"Optional summary. At most 2000 characters."},{"type":"null"}]}},"required":["documentType","fileName","fileSize","mimeType","visibility"],"additionalProperties":false},"StatsValueOutput":{"type":"object","properties":{"totalValue":{"$ref":"#/components/schemas/BigDecimal"},"conversionReliable":{"type":"boolean","description":"False when at least one token could not be converted into the organization base currency.","examples":[true]}},"required":["totalValue","conversionReliable"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the active system.","examples":[{"totalValue":"2450000.50","conversionReliable":true}]},"StatsTrustedIssuerStatsOutput_1":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsTrustedIssuerStatsBucket"},"description":"Added, active, and removed trusted-issuer counts for each bucket."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested from/to window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalAddedTrustedIssuers":5,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":0},{"timestamp":"2026-03-11T23:59:59.000Z","totalAddedTrustedIssuers":6,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":1}]}]},"StatsTrustedIssuerStatsBucket":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalAddedTrustedIssuers":{"type":"number","description":"Trusted issuers added on or before the end of this bucket.","examples":[5]},"totalActiveTrustedIssuers":{"type":"number","description":"Trusted issuers that were active at the end of this bucket.","examples":[5]},"totalRemovedTrustedIssuers":{"type":"number","description":"Trusted issuers that were removed on or before the end of this bucket.","examples":[0]}},"required":["timestamp","totalAddedTrustedIssuers","totalActiveTrustedIssuers","totalRemovedTrustedIssuers"],"additionalProperties":false},"StatsResolvedRange_1":{"type":"object","properties":{"interval":{"$ref":"#/components/schemas/StatsRangeInterval"},"from":{"$ref":"#/components/schemas/TimestampEncoded"},"to":{"$ref":"#/components/schemas/TimestampEncoded"},"isPreset":{"type":"boolean"}},"required":["interval","from","to","isPreset"],"additionalProperties":false,"description":"Window the platform resolved from the preset or the custom from/to pair."},"StatsRangeInterval":{"type":"string","enum":["hour","day"]},"TimestampEncoded_3":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"}]},"StatsTrustedIssuerStatsOutput":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsTrustedIssuerStatsBucket"},"description":"Added, active, and removed trusted-issuer counts for each bucket."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested named window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalAddedTrustedIssuers":5,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":0},{"timestamp":"2026-03-11T23:59:59.000Z","totalAddedTrustedIssuers":6,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":1}]}]},"StatsRangePreset":{"type":"string","enum":["allTime","ytd","trailing12Months","trailing6Months","trailing3Months","trailing1Month","trailing7Days","trailing24Hours"],"description":"Named window such as `trailing1Month`, `trailing7Days`, or `ytd`.","examples":["trailing1Month","ytd","trailing7Days"]},"StatsTrustedIssuerStatsStateOutput":{"type":"object","properties":{"totalAddedTrustedIssuers":{"type":"number","description":"Trusted issuers ever added on the active system.","examples":[6]},"totalActiveTrustedIssuers":{"type":"number","description":"Trusted issuers that are currently active. This is added minus removed.","examples":[5]},"totalRemovedTrustedIssuers":{"type":"number","description":"Trusted issuers that were removed.","examples":[1]}},"required":["totalAddedTrustedIssuers","totalActiveTrustedIssuers","totalRemovedTrustedIssuers"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the active system.","examples":[{"totalAddedTrustedIssuers":6,"totalActiveTrustedIssuers":5,"totalRemovedTrustedIssuers":1}]},"StatsTransactionHistoryOutput":{"type":"object","properties":{"totalTransactions":{"type":"number","description":"Transfer events indexed for the active system across all time.","examples":[1842]},"recentTransactions":{"type":"number","description":"Transfer events inside the requested trailing window.","examples":[63]},"transactionHistory":{"type":"array","items":{"$ref":"#/components/schemas/StatsTransactionHistoryPoint"},"description":"Daily transfer-event counts for the requested window."},"timeRangeDays":{"type":"number","description":"Trailing window in days used for the series and `recentTransactions`.","examples":[7]}},"required":["totalTransactions","recentTransactions","transactionHistory","timeRangeDays"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the supplied query.","examples":[{"totalTransactions":1842,"recentTransactions":63,"transactionHistory":[{"timestamp":"2026-02-11T00:00:00.000Z","transactions":21},{"timestamp":"2026-02-25T00:00:00.000Z","transactions":28},{"timestamp":"2026-03-11T23:59:59.000Z","transactions":14}],"timeRangeDays":7}]},"StatsTransactionHistoryPoint":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"transactions":{"type":"number","description":"Transfer events on this day.","examples":[21]}},"required":["timestamp","transactions"],"additionalProperties":false},"StatsTransactionCountOutput":{"type":"object","properties":{"totalTransactions":{"type":"integer"},"recentTransactions":{"type":"integer"},"timeRangeDays":{"type":"integer"}},"required":["totalTransactions","recentTransactions","timeRangeDays"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the supplied query.","examples":[{"totalTransactions":1842,"recentTransactions":63,"timeRangeDays":7}]},"StatsTopicSchemesStatsOutput_1":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsTopicSchemesStatsBucket"},"description":"Registered, active, and removed topic-scheme counts for each bucket."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested from/to window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalRegisteredTopicSchemes":4,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":0},{"timestamp":"2026-03-11T23:59:59.000Z","totalRegisteredTopicSchemes":5,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":1}]}]},"StatsTopicSchemesStatsBucket":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalRegisteredTopicSchemes":{"type":"number","description":"Topic schemes registered on or before the end of this bucket.","examples":[4]},"totalActiveTopicSchemes":{"type":"number","description":"Topic schemes that were enabled at the end of this bucket.","examples":[4]},"totalRemovedTopicSchemes":{"type":"number","description":"Topic schemes that were removed on or before the end of this bucket.","examples":[0]}},"required":["timestamp","totalRegisteredTopicSchemes","totalActiveTopicSchemes","totalRemovedTopicSchemes"],"additionalProperties":false},"StatsTopicSchemesStatsOutput":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsTopicSchemesStatsBucket"},"description":"Registered, active, and removed topic-scheme counts for each bucket."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested named window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalRegisteredTopicSchemes":4,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":0},{"timestamp":"2026-03-11T23:59:59.000Z","totalRegisteredTopicSchemes":5,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":1}]}]},"StatsTopicSchemesStatsStateOutput":{"type":"object","properties":{"totalRegisteredTopicSchemes":{"type":"number","description":"Topic schemes ever registered on the active system.","examples":[5]},"totalActiveTopicSchemes":{"type":"number","description":"Topic schemes that are currently enabled. This is registered minus removed.","examples":[4]},"totalRemovedTopicSchemes":{"type":"number","description":"Topic schemes that were removed.","examples":[1]}},"required":["totalRegisteredTopicSchemes","totalActiveTopicSchemes","totalRemovedTopicSchemes"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the active system.","examples":[{"totalRegisteredTopicSchemes":5,"totalActiveTopicSchemes":4,"totalRemovedTopicSchemes":1}]},"StatsTopicSchemeClaimsCoverageOutput":{"type":"object","properties":{"totalActiveTopicSchemes":{"type":"number","description":"Enabled topic schemes on the active system. Use this as the coverage denominator.","examples":[4]},"missingTopics":{"type":"array","items":{"$ref":"#/components/schemas/MissingTopicScheme"},"description":"Enabled topic schemes that currently have no active claims. A topic is listed when no claim was ever issued, or when every issued claim was removed or revoked."}},"required":["totalActiveTopicSchemes","missingTopics"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the active system.","examples":[{"totalActiveTopicSchemes":4,"missingTopics":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc303078616363726564","topicId":"69879","name":"accreditedInvestor","signature":"uint256 claimIssuedAt","registry":{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"},"isGlobal":false}]}]},"MissingTopicScheme":{"type":"object","properties":{"id":{"type":"string","description":"Stable identifier for this topic scheme.","examples":["0xFABB0ac9d68B0B445fB7357272Ff202C5651694a3078616363726564"]},"topicId":{"type":"string","description":"Numeric topic identifier as a decimal string.","examples":["69879"]},"name":{"type":"string","description":"Display name of the topic, such as `accreditedInvestor`.","examples":["accreditedInvestor"]},"signature":{"type":"string","description":"Claim data types used to verify claims on this topic.","examples":["uint256 claimIssuedAt"]},"registry":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Topic-scheme registry that holds this topic."},"isGlobal":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","topicId","name","signature","registry"],"additionalProperties":false},"StatsSystemValueHistoryOutput_1":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsSystemValueHistoryBucket"},"description":"System-wide token value for each bucket in the resolved window."},"conversionReliable":{"type":"boolean","description":"False when at least one token could not be converted into the organization base currency.","examples":[true]}},"required":["range","data","conversionReliable"],"additionalProperties":false,"description":"Indexed time series for the requested from/to window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalValueInBaseCurrency":2210000},{"timestamp":"2026-02-25T00:00:00.000Z","totalValueInBaseCurrency":2365400},{"timestamp":"2026-03-11T23:59:59.000Z","totalValueInBaseCurrency":2450000.5}],"conversionReliable":true}]},"StatsSystemValueHistoryBucket":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalValueInBaseCurrency":{"type":"number","description":"Total value of every token in the active system at the end of this bucket.","examples":[2210000]}},"required":["timestamp","totalValueInBaseCurrency"],"additionalProperties":false},"StatsSystemValueHistoryOutput":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsSystemValueHistoryBucket"},"description":"System-wide token value for each bucket in the resolved window."},"conversionReliable":{"type":"boolean","description":"False when at least one token could not be converted into the organization base currency.","examples":[true]}},"required":["range","data","conversionReliable"],"additionalProperties":false,"description":"Indexed time series for the requested named window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalValueInBaseCurrency":2210000},{"timestamp":"2026-02-25T00:00:00.000Z","totalValueInBaseCurrency":2365400},{"timestamp":"2026-03-11T23:59:59.000Z","totalValueInBaseCurrency":2450000.5}],"conversionReliable":true}]},"StatsPortfolioDetailsOutputSchemaV1":{"type":"object","properties":{"totalValue":{"$ref":"#/components/schemas/BigDecimal"},"totalAssetTypes":{"type":"integer"},"totalAssetsHeld":{"type":"integer"},"typeBreakdown":{"type":"array","items":{"$ref":"#/components/schemas/StatsPortfolioDetailsTypeBreakdown"},"description":"Holdings split by asset type, including value and share of the portfolio."},"valueBreakdown":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/BigDecimal"},"description":"Total value held per asset type. Keys are known types such as `bond` or custom template slugs such as `kbc-deposit`."},"holdingsBreakdown":{"type":"object","additionalProperties":{"type":"integer"},"description":"Holdings count per asset type. Keys match `valueBreakdown`.","examples":[{"bond":4,"equity":3,"deposit":5}]},"valueBreakdownByClass":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/BigDecimal"},"description":"Total value held per asset class, such as `fixed-income` or `equity`."},"holdingsBreakdownByClass":{"type":"object","additionalProperties":{"type":"integer"},"description":"Holdings count per asset class. Keys match `valueBreakdownByClass`.","examples":[{"fixed-income":9,"equity":3}]},"conversionReliable":{"type":"boolean","description":"False when at least one holding could not be converted into the organization base currency.","examples":[true]},"dayChange":{"anyOf":[{"$ref":"#/components/schemas/StatsPortfolioDayChange"},{"type":"null"}],"description":"Trailing-24h change of the total portfolio value in base currency. Null when no portfolio snapshot at least 24h old exists."},"byCountry":{"type":"array","items":{"$ref":"#/components/schemas/StatsPortfolioDetailsCountryBreakdown"},"description":"Holdings value grouped by the issuing token's ISO-3166 numeric jurisdiction, descending by value. The 0 bucket holds tokens with no assigned country."},"totalTokenFactories":{"type":"integer"},"tokenFactoryBreakdown":{"type":"array","items":{"$ref":"#/components/schemas/StatsPortfolioDetailsTokenFactoryBreakdown"},"description":"Per-token-factory portfolio breakdown"}},"required":["totalValue","totalAssetTypes","totalAssetsHeld","typeBreakdown","valueBreakdown","holdingsBreakdown","valueBreakdownByClass","holdingsBreakdownByClass","conversionReliable","dayChange","totalTokenFactories","tokenFactoryBreakdown"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the supplied query.","examples":[{"totalValue":"2450000.50","totalAssetTypes":3,"totalAssetsHeld":12,"typeBreakdown":[{"assetType":"bond","totalValue":"1188250.25","tokenBalancesCount":4,"percentage":48.5},{"assetType":"equity","totalValue":"612000.00","tokenBalancesCount":3,"percentage":25},{"assetType":"deposit","totalValue":"649750.25","tokenBalancesCount":5,"percentage":26.5}],"valueBreakdown":{"bond":"1188250.25","equity":"612000.00","deposit":"649750.25"},"holdingsBreakdown":{"bond":4,"equity":3,"deposit":5},"valueBreakdownByClass":{"fixed-income":"1838000.50","equity":"612000.00"},"holdingsBreakdownByClass":{"fixed-income":9,"equity":3},"conversionReliable":true,"dayChange":{"absoluteChange":"18450.25","percentChange":0.76,"windowStart":"2026-03-10T16:02:08.000Z"},"byCountry":[{"countryCode":56,"valueInBaseCurrency":"1680000.00","assetCount":7},{"countryCode":840,"valueInBaseCurrency":"770000.50","assetCount":5}],"totalTokenFactories":2,"tokenFactoryBreakdown":[{"tokenFactoryId":"0xbDA5747bFD65F08deb54cb465eB87D40e51B197E","tokenFactoryName":"Northwind Coffee Bond Factory","tokenFactoryTypeId":"bond","assetType":"bond","tokenBalancesCount":4,"percentage":48.5,"totalValue":"1188250.25"}]}]},"StatsPortfolioDetailsTokenFactoryBreakdown":{"type":"object","properties":{"tokenFactoryId":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactoryName":{"type":"string","description":"Human readable factory name","examples":["Acme Bond Factory","Blue Chip Equity Factory"]},"tokenFactoryTypeId":{"type":"string","description":"Factory type identifier (e.g., bond, equity)","examples":["bond","equity"]},"assetType":{"type":"string","description":"Asset type derived from factory typeId","examples":["bond","equity"]},"tokenBalancesCount":{"type":"integer"},"percentage":{"type":"number"},"totalValue":{"$ref":"#/components/schemas/BigDecimal"}},"required":["tokenFactoryName","tokenFactoryTypeId","assetType","tokenBalancesCount","percentage"],"additionalProperties":false},"StatsPortfolioDetailsCountryBreakdown":{"type":"object","properties":{"countryCode":{"type":"integer"},"valueInBaseCurrency":{"$ref":"#/components/schemas/BigDecimal"},"assetCount":{"type":"integer"}},"required":["countryCode","valueInBaseCurrency","assetCount"],"additionalProperties":false},"StatsPortfolioDayChange":{"type":"object","properties":{"absoluteChange":{"$ref":"#/components/schemas/BigDecimal"},"percentChange":{"anyOf":[{"type":"number","description":"Signed percentage change over the trailing 24h window. Null when the 24h-ago baseline was zero (no meaningful ratio)."},{"type":"null"}]},"windowStart":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["absoluteChange","percentChange","windowStart"],"additionalProperties":false},"StatsPortfolioDetailsTypeBreakdown":{"type":"object","properties":{"assetType":{"type":"string","description":"Asset type such as `bond` or `equity`, or a custom template slug such as `kbc-deposit`.","examples":["bond","equity","kbc-deposit"]},"totalValue":{"$ref":"#/components/schemas/BigDecimal"},"tokenBalancesCount":{"type":"integer"},"percentage":{"type":"number"}},"required":["assetType","totalValue","tokenBalancesCount","percentage"],"additionalProperties":false},"StatsPortfolioOutput_1":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsPortfolioBucket"},"description":"Caller's portfolio value for each bucket in the resolved window."},"conversionReliable":{"type":"boolean","description":"False when at least one holding could not be converted into the organization base currency.","examples":[true]}},"required":["range","data","conversionReliable"],"additionalProperties":false,"description":"Indexed time series for the requested from/to window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalValueInBaseCurrency":2210000},{"timestamp":"2026-02-25T00:00:00.000Z","totalValueInBaseCurrency":2365400},{"timestamp":"2026-03-11T23:59:59.000Z","totalValueInBaseCurrency":2450000.5}],"conversionReliable":true}]},"StatsPortfolioBucket":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalValueInBaseCurrency":{"type":"number","description":"Caller's holdings at the end of this bucket, as a number in the organization base currency.","examples":[2210000]}},"required":["timestamp","totalValueInBaseCurrency"],"additionalProperties":false},"StatsPortfolioOutput":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsPortfolioBucket"},"description":"Caller's portfolio value for each bucket in the resolved window."},"conversionReliable":{"type":"boolean","description":"False when at least one holding could not be converted into the organization base currency.","examples":[true]}},"required":["range","data","conversionReliable"],"additionalProperties":false,"description":"Indexed time series for the requested named window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalValueInBaseCurrency":2210000},{"timestamp":"2026-02-25T00:00:00.000Z","totalValueInBaseCurrency":2365400},{"timestamp":"2026-03-11T23:59:59.000Z","totalValueInBaseCurrency":2450000.5}],"conversionReliable":true}]},"StatsIdentityStatsOverTimeOutput_1":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"identityStats":{"type":"array","items":{"$ref":"#/components/schemas/StatsIdentityStatsBucket"},"description":"Active identity counts for each bucket in the resolved window."}},"required":["range","identityStats"],"additionalProperties":false,"description":"Indexed time series for the requested from/to window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"identityStats":[{"timestamp":"2026-02-11T00:00:00.000Z","activeUserIdentitiesCount":41},{"timestamp":"2026-02-25T00:00:00.000Z","activeUserIdentitiesCount":45},{"timestamp":"2026-03-11T23:59:59.000Z","activeUserIdentitiesCount":48}]}]},"StatsIdentityStatsBucket":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"activeUserIdentitiesCount":{"type":"number","description":"Identities registered as ACTIVE at the end of this bucket.","examples":[41]}},"required":["timestamp","activeUserIdentitiesCount"],"additionalProperties":false},"StatsIdentityStatsOverTimeOutput":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"identityStats":{"type":"array","items":{"$ref":"#/components/schemas/StatsIdentityStatsBucket"},"description":"Active identity counts for each bucket in the resolved window."}},"required":["range","identityStats"],"additionalProperties":false,"description":"Indexed time series for the requested named window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"identityStats":[{"timestamp":"2026-02-11T00:00:00.000Z","activeUserIdentitiesCount":41},{"timestamp":"2026-02-25T00:00:00.000Z","activeUserIdentitiesCount":45},{"timestamp":"2026-03-11T23:59:59.000Z","activeUserIdentitiesCount":48}]}]},"StatsIdentityCountOutput":{"type":"object","properties":{"userIdentitiesCreatedCount":{"type":"number","description":"Identities created on the active system.","examples":[51]},"activeUserIdentitiesCount":{"type":"number","description":"Identities registered as ACTIVE.","examples":[48]},"pendingRegistrationsCount":{"type":"number","description":"Identities that exist but have no ACTIVE registry entry yet.","examples":[3]}},"required":["userIdentitiesCreatedCount","activeUserIdentitiesCount","pendingRegistrationsCount"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the active system.","examples":[{"userIdentitiesCreatedCount":51,"activeUserIdentitiesCount":48,"pendingRegistrationsCount":3}]},"StatsCountryAssetCountOutput":{"type":"object","properties":{"totalsByCountry":{"type":"object","additionalProperties":{"type":"number"},"description":"Token counts keyed by the issuing token's ISO 3166 numeric country code as a string. The `0` key holds tokens with no assigned country.","examples":[{"56":7,"840":5}]},"totalCountries":{"type":"number","description":"Number of distinct issuing countries, including the unassigned bucket when it is present.","examples":[2]},"totalAssets":{"type":"number","description":"Number of tokens included in the country totals.","examples":[12]}},"required":["totalsByCountry","totalCountries","totalAssets"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the active system.","examples":[{"totalsByCountry":{"56":7,"840":5},"totalCountries":2,"totalAssets":12}]},"StatsClaimsStatsOutput_1":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsClaimsStatsBucket"},"description":"Issued, active, removed, and revoked claim counts for each bucket."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested from/to window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalIssuedClaims":96,"totalActiveClaims":82,"totalRemovedClaims":10,"totalRevokedClaims":4},{"timestamp":"2026-03-11T23:59:59.000Z","totalIssuedClaims":120,"totalActiveClaims":98,"totalRemovedClaims":14,"totalRevokedClaims":8}]}]},"StatsClaimsStatsBucket":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"totalIssuedClaims":{"type":"number","description":"Claims issued on or before the end of this bucket.","examples":[96]},"totalActiveClaims":{"type":"number","description":"Claims that were active at the end of this bucket.","examples":[82]},"totalRemovedClaims":{"type":"number","description":"Claims that were removed on or before the end of this bucket.","examples":[10]},"totalRevokedClaims":{"type":"number","description":"Claims that were revoked on or before the end of this bucket.","examples":[4]}},"required":["timestamp","totalIssuedClaims","totalActiveClaims","totalRemovedClaims","totalRevokedClaims"],"additionalProperties":false},"StatsClaimsStatsOutput":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsClaimsStatsBucket"},"description":"Issued, active, removed, and revoked claim counts for each bucket."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested named window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","totalIssuedClaims":96,"totalActiveClaims":82,"totalRemovedClaims":10,"totalRevokedClaims":4},{"timestamp":"2026-03-11T23:59:59.000Z","totalIssuedClaims":120,"totalActiveClaims":98,"totalRemovedClaims":14,"totalRevokedClaims":8}]}]},"StatsClaimsStatsStateOutput":{"type":"object","properties":{"totalIssuedClaims":{"type":"number","description":"Claims ever issued on the active system.","examples":[120]},"totalActiveClaims":{"type":"number","description":"Claims that are currently active.","examples":[98]},"totalRemovedClaims":{"type":"number","description":"Claims that were removed.","examples":[14]},"totalRevokedClaims":{"type":"number","description":"Claims that were revoked.","examples":[8]}},"required":["totalIssuedClaims","totalActiveClaims","totalRemovedClaims","totalRevokedClaims"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the active system.","examples":[{"totalIssuedClaims":120,"totalActiveClaims":98,"totalRemovedClaims":14,"totalRevokedClaims":8}]},"StatsAssetsOutput":{"type":"object","properties":{"totalAssets":{"type":"integer"},"assetBreakdown":{"type":"object","additionalProperties":{"type":"integer"},"description":"Token counts keyed by asset type, such as `bond` or `deposit`.","examples":[{"bond":4,"equity":3,"deposit":5}]},"totalValue":{"$ref":"#/components/schemas/BigDecimal"},"valueBreakdown":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/BigDecimal"},"description":"Token value keyed by asset type, as decimal strings in the organization base currency."},"valueBreakdownByClass":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/BigDecimal"},"description":"Token value keyed by asset class, such as `fixed-income` or `equity`."},"tokensCreatedCount":{"type":"integer","description":"Number of tokens created on the active system, including tokens that have not launched yet.","examples":[12]},"tokensLaunchedCount":{"type":"integer","description":"Number of tokens that completed launch.","examples":[10]},"pendingLaunchesCount":{"type":"integer","description":"Number of created tokens that have not launched yet.","examples":[2]},"conversionReliable":{"type":"boolean","description":"False when at least one token could not be converted into the organization base currency.","examples":[true]}},"required":["totalAssets","assetBreakdown","totalValue","valueBreakdown","valueBreakdownByClass","tokensCreatedCount","tokensLaunchedCount","pendingLaunchesCount","conversionReliable"],"additionalProperties":false,"description":"Indexed snapshot of the requested statistic for the active system.","examples":[{"totalAssets":12,"assetBreakdown":{"bond":4,"equity":3,"deposit":5},"totalValue":"2450000.50","valueBreakdown":{"bond":"1188250.25","equity":"612000.00","deposit":"649750.25"},"valueBreakdownByClass":{"fixed-income":"1838000.50","equity":"612000.00"},"tokensCreatedCount":12,"tokensLaunchedCount":10,"pendingLaunchesCount":2,"conversionReliable":true}]},"StatsAssetLifecycleOutput_1":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsAssetLifecycleBucket"},"description":"Token creation and launch counts for each bucket in the resolved window."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested from/to window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","assetsCreated":1,"assetsLaunched":1},{"timestamp":"2026-02-25T00:00:00.000Z","assetsCreated":2,"assetsLaunched":1},{"timestamp":"2026-03-11T23:59:59.000Z","assetsCreated":0,"assetsLaunched":1}]}]},"StatsAssetLifecycleBucket":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"assetsCreated":{"type":"number","description":"Tokens created in this bucket.","examples":[1]},"assetsLaunched":{"type":"number","description":"Tokens that completed launch in this bucket.","examples":[1]}},"required":["timestamp","assetsCreated","assetsLaunched"],"additionalProperties":false},"StatsAssetLifecycleOutput":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsAssetLifecycleBucket"},"description":"Token creation and launch counts for each bucket in the resolved window."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested named window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","assetsCreated":1,"assetsLaunched":1},{"timestamp":"2026-02-25T00:00:00.000Z","assetsCreated":2,"assetsLaunched":1},{"timestamp":"2026-03-11T23:59:59.000Z","assetsCreated":0,"assetsLaunched":1}]}]},"StatsAssetActivityOutput_1":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsAssetActivityBucket"},"description":"Transfer, mint, and burn counts for each bucket in the resolved window."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested from/to window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","transferEventsCount":18,"mintEventsCount":2,"burnEventsCount":0},{"timestamp":"2026-02-25T00:00:00.000Z","transferEventsCount":24,"mintEventsCount":1,"burnEventsCount":1},{"timestamp":"2026-03-11T23:59:59.000Z","transferEventsCount":11,"mintEventsCount":0,"burnEventsCount":0}]}]},"StatsAssetActivityBucket":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"transferEventsCount":{"type":"number","description":"Transfer events in this bucket.","examples":[18]},"mintEventsCount":{"type":"number","description":"Mint events in this bucket.","examples":[2]},"burnEventsCount":{"type":"number","description":"Burn events in this bucket.","examples":[0]}},"required":["timestamp","transferEventsCount","mintEventsCount","burnEventsCount"],"additionalProperties":false},"StatsAssetActivityOutput":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/StatsResolvedRange_1"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StatsAssetActivityBucket"},"description":"Transfer, mint, and burn counts for each bucket in the resolved window."}},"required":["range","data"],"additionalProperties":false,"description":"Indexed time series for the requested named window.","examples":[{"range":{"interval":"day","from":"2026-02-11T00:00:00.000Z","to":"2026-03-11T23:59:59.000Z","isPreset":true},"data":[{"timestamp":"2026-02-11T00:00:00.000Z","transferEventsCount":18,"mintEventsCount":2,"burnEventsCount":0},{"timestamp":"2026-02-25T00:00:00.000Z","transferEventsCount":24,"mintEventsCount":1,"burnEventsCount":1},{"timestamp":"2026-03-11T23:59:59.000Z","transferEventsCount":11,"mintEventsCount":0,"burnEventsCount":0}]}]},"PredictAccessManagerAddressOutput":{"type":"object","properties":{"predictedAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["predictedAddress"],"additionalProperties":false,"description":"CREATE2 address the factory will use for the token access manager. The address is not reserved until the token is created."},"PredictAccessManagerAddressInput":{"anyOf":[{"$ref":"#/components/schemas/PredictAccessManagerAddressStandardInput"},{"$ref":"#/components/schemas/PredictAccessManagerAddressDalpAssetInput"}],"description":"Token metadata used to predict the CREATE2 access-manager address. For a DALP asset also send `assetTypeName`, because that name is part of the salt. Repeating the same metadata returns the same address."},"PredictAccessManagerAddressDalpAssetInput":{"type":"object","properties":{"name":{"type":"string","maxLength":50,"description":"Token name used in the CREATE2 salt. Maximum length is 50 characters.","examples":["Northwind Coffee 2028 Bond"]},"symbol":{"$ref":"#/components/schemas/AssetSymbol_2"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"type":{"type":"string","enum":["dalp-asset"],"description":"Send `dalp-asset` when the factory creates a custom asset type.","examples":["dalp-asset"]},"assetTypeName":{"type":"string","minLength":1,"maxLength":255,"description":"Concrete asset type name included in the CREATE2 salt, such as `bond` or a custom template slug.","examples":["bond","equity","kbc-deposit"]}},"required":["name","symbol","decimals","type","assetTypeName"],"additionalProperties":false},"AssetSymbol_2":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"Token symbol used in the CREATE2 salt.","examples":["NWCB28"]},"PredictAccessManagerAddressStandardInput":{"type":"object","properties":{"name":{"type":"string","maxLength":50,"description":"Token name used in the CREATE2 salt. Maximum length is 50 characters.","examples":["Northwind Coffee 2028 Bond"]},"symbol":{"$ref":"#/components/schemas/AssetSymbol_2"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"type":{"$ref":"#/components/schemas/AssetType_1"}},"required":["name","symbol","decimals","type"],"additionalProperties":false},"AssetType_1":{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal"],"description":"Asset type the factory will create, such as `bond` or `equity`.","examples":["bond","equity","fund"]},"AvailableOutput":{"type":"object","properties":{"isAvailable":{"type":"boolean","description":"True when no contract is deployed at the predicted or supplied access-manager address.","examples":[true,false]}},"required":["isAvailable"],"additionalProperties":false,"description":"Whether the predicted or supplied access-manager address is free. `isAvailable` is true when no contract is deployed at that address."},"AvailableInput":{"type":"object","properties":{"parameters":{"$ref":"#/components/schemas/PredictAccessManagerAddressQueryInput"},"accessControl":{"$ref":"#/components/schemas/EvmAddress_4"}},"additionalProperties":false,"description":"Address to test. Send `parameters` to predict the access-manager address from token metadata, or send `accessControl` to test a known address. The check is a read of indexed and chain state and does not deploy a contract."},"EvmAddress_4":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Known access-manager address to test. The check does not reserve or deploy the address.","examples":["0xFABB0ac9d68B0B445fB7357272Ff202C5651694a"]},"PredictAccessManagerAddressQueryInput":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":50,"description":"Token name used in the CREATE2 salt. Maximum length is 50 characters.","examples":["Northwind Coffee 2028 Bond"]},"symbol":{"$ref":"#/components/schemas/AssetSymbol_2"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"type":{"$ref":"#/components/schemas/AssetType"}},"required":["name","symbol","decimals","type"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","maxLength":50,"description":"Token name used in the CREATE2 salt. Maximum length is 50 characters.","examples":["Northwind Coffee 2028 Bond"]},"symbol":{"$ref":"#/components/schemas/AssetSymbol_2"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"factoryAddress":{"$ref":"#/components/schemas/EvmAddress"},"type":{"type":"string","enum":["dalp-asset"]},"assetTypeName":{"type":"string","minLength":1,"maxLength":255}},"required":["name","symbol","decimals","type","assetTypeName"],"additionalProperties":false}]},"TokenFactoryDetail":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Display name of the token factory, such as Northwind Coffee Bond Factory.","examples":["Northwind Coffee Bond Factory","Equity Factory"]},"typeId":{"$ref":"#/components/schemas/AssetFactoryTypeId_1"},"factoryImplementation":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Registry-level factory implementation, or null when the indexer has not stored it yet.","examples":["0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC",null]},"instanceImplementation":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Implementation new token proxies delegate to, or null when the indexer has not stored it yet.","examples":["0x90F79bf6EB2c4f870365E785982E1f101E93b906",null]}},"required":["id","name","typeId","factoryImplementation","instanceImplementation"],"additionalProperties":false,"description":"One token factory and the implementations the indexer recorded for it. `factoryImplementation` is the registry-level factory, and `instanceImplementation` is the implementation new token proxies delegate to. Either field is null when the indexer has not stored it yet."},"AssetFactoryTypeId_1":{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal","dalp-asset"],"description":"Asset type this factory creates, such as `bond` or `equity`.","examples":["bond","equity"]},"EvmAddress_3":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Token factory contract to read.","examples":["0xbDA5747bFD65F08deb54cb465eB87D40e51B197E"]},"System_2":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"canResume":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"chainId":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"null"}]},{"type":"null"}]},"deployedInTransaction":{"type":"string","description":"Transaction hash where system was deployed","examples":["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]},"tokenFactoryRegistry":{"anyOf":[{"$ref":"#/components/schemas/TokenFactoryRegistry"},{"type":"null"}]},"systemAddonRegistry":{"anyOf":[{"$ref":"#/components/schemas/SystemAddonRegistry"},{"type":"null"}]},"compliance":{"anyOf":[{"$ref":"#/components/schemas/Compliance"},{"type":"null"}]},"complianceModuleRegistry":{"anyOf":[{"$ref":"#/components/schemas/ComplianceModuleRegistry"},{"type":"null"}]},"systemAccessManager":{"anyOf":[{"$ref":"#/components/schemas/SystemAccessManager"},{"type":"null"}]},"identityRegistryStorage":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/IdentityRegistry"},{"type":"null"}]},"trustedIssuersRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"topicSchemeRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"externalTokenRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}],"description":"Registry of external tokens tracked by this system. `null` before bootstrap completes."},"userPermissions":{"anyOf":[{"$ref":"#/components/schemas/UserPermissions"},{"type":"null"}],"description":"Caller permissions on this system. Omitted on unauthenticated reads."},"userIdentity":{"anyOf":[{"$ref":"#/components/schemas/UserIdentity"},{"type":"null"}],"description":"Caller's identity on this system. `address` means an identity contract exists. `registered` means the identity is ACTIVE in the registry."},"status":{"$ref":"#/components/schemas/SystemStatus"},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Last update timestamp from deployment tracking"},"userIdentityRegistered":{"type":"boolean","description":"Whether the current user's identity is registered in the identity registry","examples":[true,false]},"isZeroGasNetwork":{"type":"boolean","description":"Whether the active chain charges no gas (zero base fee)","examples":[true,false]}},"required":["id","deployedInTransaction","tokenFactoryRegistry","systemAddonRegistry","compliance","complianceModuleRegistry","systemAccessManager","identityRegistryStorage","identityRegistry","trustedIssuersRegistry","topicSchemeRegistry","externalTokenRegistry","status","updatedAt","userIdentityRegistered","isZeroGasNetwork"],"additionalProperties":false,"description":"The active system after the factory-creation transaction is accepted. Registry fields reflect indexed state, so a just-created factory appears after the indexer catches up."},"SystemStatus":{"type":"string","enum":["not_created","bootstrapping","completed","unknown"],"description":"Current deployment status of the system","examples":["not_created","bootstrapping","completed","unknown"]},"UserIdentity":{"type":"object","properties":{"address":{"$ref":"#/components/schemas/EvmAddress"},"registered":{"anyOf":[{"type":"object","properties":{"isRegistered":{"type":"boolean","enum":[true]},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode"},{"type":"null"}]}},"required":["isRegistered","country"],"additionalProperties":false},{"type":"null"}]}},"required":["address"],"additionalProperties":false,"description":"Caller's identity on this system. `address` is the identity contract. `registered` is present only when the identity is ACTIVE in the registry, and includes the stored country."},"ISOCountryCode":{"type":"string"},"UserPermissions":{"type":"object","properties":{"roles":{"type":"object","properties":{"addonManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"auditor":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"systemManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tokenManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"complianceManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimPolicyManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"claimIssuer":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"identityManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"feedsManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"gasManager":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false},"holdsAssetGovernanceRole":{"type":"boolean"},"actions":{"$ref":"#/components/schemas/SystemActions"}},"required":["roles","holdsAssetGovernanceRole","actions"],"additionalProperties":false,"description":"Caller permissions on this system. `roles` are on-chain access-control roles. `actions` are the derived Console and API capabilities. `holdsAssetGovernanceRole` is true when the caller can govern assets on this system."},"SystemActions":{"type":"object","properties":{"accountNativeBalanceRead":{"type":"boolean"},"accountSearch":{"type":"boolean"},"addonCreate":{"type":"boolean"},"adminList":{"type":"boolean"},"claimCreate":{"type":"boolean"},"claimList":{"type":"boolean"},"claimRevoke":{"type":"boolean"},"complianceModuleCreate":{"type":"boolean"},"complianceModuleRemove":{"type":"boolean"},"fixedYieldScheduleCreate":{"type":"boolean"},"tokenSaleCreate":{"type":"boolean"},"xvpCreate":{"type":"boolean"},"grantRole":{"type":"boolean"},"identityCreate":{"type":"boolean"},"identityRead":{"type":"boolean"},"identitySearch":{"type":"boolean"},"identityList":{"type":"boolean"},"entityList":{"type":"boolean"},"identityRegister":{"type":"boolean"},"identityUpdateCountry":{"type":"boolean"},"kycDelete":{"type":"boolean"},"kycList":{"type":"boolean"},"kycRead":{"type":"boolean"},"kycUpsert":{"type":"boolean"},"kycProfileRead":{"type":"boolean"},"kycVersionsList":{"type":"boolean"},"kycVersionCreate":{"type":"boolean"},"kycVersionRead":{"type":"boolean"},"kycVersionUpdate":{"type":"boolean"},"kycVersionSubmit":{"type":"boolean"},"kycVersionApprove":{"type":"boolean"},"kycVersionReject":{"type":"boolean"},"kycVersionRequestUpdate":{"type":"boolean"},"kycDocumentUpload":{"type":"boolean"},"kycDocumentList":{"type":"boolean"},"kycDocumentDelete":{"type":"boolean"},"kycDocumentRead":{"type":"boolean"},"kycActionRequestsList":{"type":"boolean"},"revokeRole":{"type":"boolean"},"tokenCreate":{"type":"boolean"},"tokenFactoryCreate":{"type":"boolean"},"topicCreate":{"type":"boolean"},"topicDelete":{"type":"boolean"},"topicUpdate":{"type":"boolean"},"trustedIssuerCreate":{"type":"boolean"},"trustedIssuerDelete":{"type":"boolean"},"trustedIssuerUpdate":{"type":"boolean"},"userCreate":{"type":"boolean"},"userList":{"type":"boolean"},"userRead":{"type":"boolean"},"userSearch":{"type":"boolean"},"userSecurityManage":{"type":"boolean"}},"required":["accountNativeBalanceRead","accountSearch","addonCreate","adminList","claimCreate","claimList","claimRevoke","complianceModuleCreate","complianceModuleRemove","fixedYieldScheduleCreate","tokenSaleCreate","xvpCreate","grantRole","identityCreate","identityRead","identitySearch","identityList","entityList","identityRegister","identityUpdateCountry","kycDelete","kycList","kycRead","kycUpsert","kycProfileRead","kycVersionsList","kycVersionCreate","kycVersionRead","kycVersionUpdate","kycVersionSubmit","kycVersionApprove","kycVersionReject","kycVersionRequestUpdate","kycDocumentUpload","kycDocumentList","kycDocumentDelete","kycDocumentRead","kycActionRequestsList","revokeRole","tokenCreate","tokenFactoryCreate","topicCreate","topicDelete","topicUpdate","trustedIssuerCreate","trustedIssuerDelete","trustedIssuerUpdate","userCreate","userList","userRead","userSearch","userSecurityManage"],"additionalProperties":false,"description":"Whether the current caller may perform each system action. `true` means the request would pass the corresponding permission check."},"RegistryId":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"On-chain registry identified by its contract address.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"}]},"IdentityRegistry":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"registeredIdentities":{"type":"array","items":{"$ref":"#/components/schemas/SystemResourceRegisteredIdentity"}}},"required":["id","registeredIdentities"],"additionalProperties":false,"description":"Identity registry contract and the identities currently registered in it."},"SystemResourceRegisteredIdentity":{"type":"object","properties":{"identity":{"$ref":"#/components/schemas/RegistryId"},"country":{"anyOf":[{"type":"number"},{"type":"null"}]},"status":{"$ref":"#/components/schemas/IndexedIdentityStatus"}},"required":["identity","country","status"],"additionalProperties":false,"description":"One identity registered in the system registry. `country` is the stored numeric ISO code, or `null` when unspecified."},"IndexedIdentityStatus":{"type":"string","enum":["PENDING","ACTIVE"],"description":"Indexed identity registration status"},"SystemAccessManager":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"accessControl":{"$ref":"#/components/schemas/AccessControl"}},"required":["id","accessControl"],"additionalProperties":false,"description":"On-chain access manager for this system, including the current role assignments."},"AccessControl":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"addonModule":{"$ref":"#/components/schemas/AccessControlAccountArray"},"addonRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray"},"admin":{"$ref":"#/components/schemas/AccessControlAccountArray"},"auditor":{"$ref":"#/components/schemas/AccessControlAccountArray"},"claimPolicyManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"claimIssuer":{"$ref":"#/components/schemas/AccessControlAccountArray"},"complianceManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"custodian":{"$ref":"#/components/schemas/AccessControlAccountArray"},"emergency":{"$ref":"#/components/schemas/AccessControlAccountArray"},"feedsManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"fundsManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"gasManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"governance":{"$ref":"#/components/schemas/AccessControlAccountArray"},"identityManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"identityRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray"},"organisationIdentityManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"saleAdmin":{"$ref":"#/components/schemas/AccessControlAccountArray"},"supplyManagement":{"$ref":"#/components/schemas/AccessControlAccountArray"},"systemManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"systemModule":{"$ref":"#/components/schemas/AccessControlAccountArray"},"tokenFactoryModule":{"$ref":"#/components/schemas/AccessControlAccountArray"},"tokenFactoryRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray"},"tokenManager":{"$ref":"#/components/schemas/AccessControlAccountArray"},"trustedIssuersMetaRegistryModule":{"$ref":"#/components/schemas/AccessControlAccountArray"},"addonManager":{"anyOf":[{"$ref":"#/components/schemas/AccessControlAccountArray"},{"type":"null"}]},"tradingVenueOperator":{"anyOf":[{"$ref":"#/components/schemas/AccessControlAccountArray"},{"type":"null"}]},"roleAdmins":{"$ref":"#/components/schemas/AccessControlRoleAdmins"}},"required":["id","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","trustedIssuersMetaRegistryModule"],"additionalProperties":false},"AccessControlRoleAdmins":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AccessControlRoleAdmin"}},{"type":"null"}]},"AccessControlRoleAdmin":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"role":{"$ref":"#/components/schemas/EthereumHexEncoded"},"roleFieldName":{"$ref":"#/components/schemas/AccessControlRole"},"adminRole":{"$ref":"#/components/schemas/EthereumHexEncoded"},"adminFieldName":{"$ref":"#/components/schemas/AccessControlRole"}},"required":["id","role","roleFieldName","adminRole","adminFieldName"],"additionalProperties":false},"AccessControlRole":{"type":"string","enum":["addonManager","addonModule","addonRegistryModule","admin","auditor","claimPolicyManager","claimIssuer","complianceManager","custodian","emergency","feedsManager","fundsManager","gasManager","governance","identityManager","identityRegistryModule","organisationIdentityManager","saleAdmin","supplyManagement","systemManager","systemModule","tokenFactoryModule","tokenFactoryRegistryModule","tokenManager","tradingVenueOperator","trustedIssuersMetaRegistryModule"]},"AccessControlAccountArray":{"type":"array","items":{"$ref":"#/components/schemas/AccessControlAccount"}},"AccessControlAccount":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"type":"boolean"}},"required":["id","isContract"],"additionalProperties":false},"ComplianceModuleRegistry":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"complianceModules":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeComplianceModule"}}},"required":["id","complianceModules"],"additionalProperties":false,"description":"Registry of compliance modules available to this system."},"RuntimeComplianceModule":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"module":{"$ref":"#/components/schemas/EvmAddress"},"typeId":{"$ref":"#/components/schemas/ComplianceTypeId_1"},"name":{"type":"string","description":"Module display name.","examples":["Identity verification"]}},"required":["id","module","typeId","name"],"additionalProperties":false,"description":"Compliance module available on this system."},"ComplianceTypeId_1":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module type.","examples":["identity-verification"]},"Compliance":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"complianceModuleConfigs":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeGlobalComplianceModuleConfig"}}},"required":["id","complianceModuleConfigs"],"additionalProperties":false,"description":"System compliance contract and the global module configurations attached to it."},"RuntimeGlobalComplianceModuleConfig":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumCompositeIdEncoded"},"complianceModule":{"$ref":"#/components/schemas/RuntimeComplianceModule"}},"required":["id","complianceModule"],"additionalProperties":false,"description":"Global compliance module enabled for the system."},"SystemAddonRegistry":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"systemAddons":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeSystemAddon"}}},"required":["id","systemAddons"],"additionalProperties":false,"description":"Registry of system addons, including the addons already created."},"RuntimeSystemAddon":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Addon display name.","examples":["XvP Settlement"]},"typeId":{"$ref":"#/components/schemas/AddonFactoryTypeIdWithVault_1"},"version":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","name","typeId"],"additionalProperties":false,"description":"System addon deployed beside the core registries."},"AddonFactoryTypeIdWithVault_1":{"type":"string","enum":["push-airdrop","vesting-airdrop","time-bound-airdrop","fixed-yield-schedule","xvp-settlement","trading-venue","token-sale","historical-balances-feature-factory","maturity-redemption-feature-factory","hold-feature-factory","transaction-fee-feature-factory","transaction-fee-accounting-feature-factory","voting-power-feature-factory","external-transaction-fee-feature-factory","fixed-treasury-yield-feature-factory","dividend-yield-feature-factory","interest-yield-feature-factory","aum-fee-feature-factory","conversion-feature-factory","conversion-minter-feature-factory","distribution-waterfall-feature-factory","permit-feature-factory","scalar-feed-aggregator-adapter-factory","issuer-signed-scalar-feed","paymaster-signer","token-governance","token-governance-timelock","document-anchor-registry","access-manager","price-resolver","unknown","vault"],"description":"Addon type, including vault addons."},"TokenFactoryRegistry":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenFactories":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeTokenFactory"}}},"required":["id","tokenFactories"],"additionalProperties":false,"description":"Registry of token factories on this system, including the factories already created."},"RuntimeTokenFactory":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Factory display name.","examples":["Bond Factory"]},"typeId":{"$ref":"#/components/schemas/AssetFactoryTypeId"}},"required":["id","name","typeId"],"additionalProperties":false,"description":"Token factory registered on this system."},"AssetFactoryTypeId":{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal","dalp-asset"],"description":"Instrument type this factory deploys.","examples":["bond"]},"FactoryCreate":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_3"},"factories":{"type":"array","items":{"$ref":"#/components/schemas/SingleFactory"},"minItems":1,"maxItems":10,"description":"One to ten factories to register on the active system.","examples":[[{"type":"bond","name":"Northwind Coffee Bond Factory"}]]}},"required":["factories"],"additionalProperties":false,"description":"Token factories to create on the active system. Send between 1 and 10 factories. Omit implementation addresses to use the directory catalog for the selected network. Repeat the same body only with the same wallet verification when the signing wallet requires a challenge."},"SingleFactory":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/AssetFactoryTypeId_2"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name for the new factory. Maximum length is 100 characters.","examples":["Northwind Coffee Bond Factory","Equity Token Factory"]},"factoryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"tokenImplementation":{"$ref":"#/components/schemas/EvmAddress"}},"required":["type","name"],"additionalProperties":false},"AssetFactoryTypeId_2":{"type":"string","enum":["bond","equity","fund","stablecoin","deposit","real-estate","precious-metal","dalp-asset"],"description":"Asset type the factory will create, such as `bond` or `equity`.","examples":["bond","equity","fund"]},"OptionalUserVerification_3":{"anyOf":[{"$ref":"#/components/schemas/UserVerification_2"},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"UserVerification_2":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"FactoryList":{"type":"array","items":{"$ref":"#/components/schemas/SystemsTokenFactory"},"description":"Every token factory indexed for the active system, in the requested sort order."},"SystemsTokenFactory":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Display name of the token factory, such as Northwind Coffee Bond Factory.","examples":["Northwind Coffee Bond Factory","Equity Factory"]},"typeId":{"$ref":"#/components/schemas/AssetFactoryTypeId_1"},"hasTokens":{"type":"boolean","description":"True when this factory has created at least one token.","examples":[true,false]},"tokenExtensions":{"$ref":"#/components/schemas/AssetExtensionArray"}},"required":["id","name","typeId","hasTokens","tokenExtensions"],"additionalProperties":false,"description":"One token factory in the v1 list. `hasTokens` is true when the factory has created at least one token, and `tokenExtensions` lists the extensions that factory attaches to new tokens."},"AssetExtensionArray":{"type":"array","items":{"$ref":"#/components/schemas/AssetExtension"},"description":"Extensions this factory attaches to new tokens, such as `PAUSABLE` and `BURNABLE`.","examples":[["PAUSABLE","BURNABLE","BOND"]]},"EntityListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EntityItem"}},"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"}},"required":["items","total","offset"],"additionalProperties":false,"description":"A page of system entities. `total` counts every matching entity, `limit` is the requested page size (at most 200), and `offset` is the number of matching entities skipped."},"EntityItem":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"contractAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"On-chain identity contract for this entity, or null when none is recorded.","examples":["0x8ba1f109551bD432803012645Ac136ddd64DBA72",null]},"contractName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of the identity or contract, or null when the indexer has no name.","examples":["Northwind Coffee Treasury Identity",null]},"entityType":{"anyOf":[{"$ref":"#/components/schemas/EntityType_1"},{"type":"null"}],"description":"Entity class such as `eoa` or `contract`, or null when the indexer has not classified it.","examples":["eoa","contract"]},"isContract":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"True when the address is a contract. Null when the indexer has not classified it.","examples":[false,true,null]},"status":{"$ref":"#/components/schemas/IdentityStatus"},"country":{"anyOf":[{"$ref":"#/components/schemas/ISOCountryCode"},{"type":"null"}],"description":"ISO 3166-1 alpha-2 country the registry recorded, or null when none is set.","examples":["BE",null]},"verificationBadges":{"type":"array","items":{"type":"string"},"description":"Verification topics the entity currently holds, such as `knowYourCustomer`.","examples":[["knowYourCustomer"]]},"lastActivity":{"type":"string","description":"UTC timestamp of the most recent indexed event that names this entity.","examples":["2026-03-11T16:02:08.000Z"]},"activeClaimsCount":{"type":"integer"},"revokedClaimsCount":{"type":"integer"},"untrustedClaimsCount":{"type":"integer"},"deployedInTransaction":{"type":"string","description":"Transaction that first created or registered this entity.","examples":["0x5c73a1e94b0d268fa37e15c8b02d94f6a1e7835c0b96d2f4e83a17c5d602b9f4"]}},"required":["id","contractAddress","contractName","entityType","isContract","status","country","verificationBadges","lastActivity","activeClaimsCount","revokedClaimsCount","untrustedClaimsCount","deployedInTransaction"],"additionalProperties":false,"description":"One indexed identity or contract in the active system. `status` is the registry registration state, `country` is an ISO 3166-1 alpha-2 code when the registry recorded one, and the claim counts split active, revoked, and untrusted claims."},"IdentityStatus":{"type":"string","enum":["pending","registered"],"description":"Registration state in the identity registry, such as `registered` or `pending`.","examples":["registered","pending"]},"EntityType_1":{"type":"string","enum":["eoa","token","asset","bond","equity","fund","deposit","stablecoin","real-estate","precious-metal","system","smart-account","contract"]},"EntityListFilters":{"type":"object","properties":{"entityType":{"$ref":"#/components/schemas/EntityType"}},"additionalProperties":false,"description":"Optional filters. Set `entityType` to keep only one entity class."},"EntityType":{"type":"string","enum":["eoa","token","asset","bond","equity","fund","deposit","stablecoin","real-estate","precious-metal","system","smart-account","contract"],"description":"Keep only entities of this class, such as `eoa` or `contract`.","examples":["eoa","contract"]},"DirectoryReadResult":{"anyOf":[{"$ref":"#/components/schemas/DirectoryReadOutput"},{"type":"null"}],"description":"Directory catalog for the selected network, or null when the platform has no indexed directory for the requested contract."},"DirectoryReadOutput":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"systemImplementation":{"$ref":"#/components/schemas/EvmAddress"},"systemAccessManagerImplementation":{"$ref":"#/components/schemas/EvmAddress"},"forwarder":{"$ref":"#/components/schemas/EvmAddress"},"systemFactory":{"$ref":"#/components/schemas/EvmAddress"},"identityFactory":{"$ref":"#/components/schemas/EvmAddress"},"identityFactoryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"identityImplementations":{"$ref":"#/components/schemas/DirectoryIdentityImplementations"},"systemImplementations":{"$ref":"#/components/schemas/DirectorySystemImplementations"},"tokenTypes":{"type":"array","items":{"$ref":"#/components/schemas/DirectoryTokenType"},"description":"Token types registered in this directory, including implementations and experimental flags."},"complianceModuleTypes":{"type":"array","items":{"$ref":"#/components/schemas/DirectoryComplianceModuleType"},"description":"Compliance module types registered in this directory."},"addonTypes":{"type":"array","items":{"$ref":"#/components/schemas/DirectoryAddonType"},"description":"Addon types registered in this directory, including factory and singleton kinds."}},"required":["id","systemImplementation","systemAccessManagerImplementation","forwarder","systemFactory","identityFactory","identityFactoryImplementation","identityImplementations","systemImplementations","tokenTypes","complianceModuleTypes","addonTypes"],"additionalProperties":false,"description":"The directory catalog for the selected network. It lists the current system and identity implementations plus every registered token type, compliance module type, and addon type, including whether a type is experimental."},"DirectoryAddonType":{"type":"object","properties":{"id":{"type":"string","description":"Stable 32-byte identifier for this catalog row.","examples":["0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d6"]},"typeId":{"type":"string","description":"32-byte type identifier the directory registered for this catalog entry.","examples":["0x626f6e6400000000000000000000000000000000000000000000000000000000"]},"name":{"type":"string","description":"Display name for this addon type, such as XvP.","examples":["XvP","Escrow"]},"kind":{"$ref":"#/components/schemas/DirectoryAddonKind"},"factoryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"instanceImplementation":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Implementation that factory-deployed addon proxies delegate to. Null for singleton or unclassified types.","examples":["0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc",null]},"registeredAt":{"$ref":"#/components/schemas/TimestampEncoded"},"isExperimental":{"type":"boolean","description":"True when this addon type is experimental and stays out of a default migration.","examples":[false,true]}},"required":["id","typeId","name","kind","factoryImplementation","instanceImplementation","registeredAt","isExperimental"],"additionalProperties":false},"DirectoryAddonKind":{"type":"string","enum":["unknown","singleton","factory"],"description":"How the addon is installed: `factory` deploys per-tenant proxies, `singleton` is one shared instance, and `unknown` is an unclassified legacy row.","examples":["factory","singleton","unknown"]},"DirectoryComplianceModuleType":{"type":"object","properties":{"id":{"type":"string","description":"Stable 32-byte identifier for this catalog row.","examples":["0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d6"]},"typeId":{"type":"string","description":"32-byte type identifier the directory registered for this catalog entry.","examples":["0x626f6e6400000000000000000000000000000000000000000000000000000000"]},"name":{"type":"string","description":"Display name for this compliance module type.","examples":["IdentityVerification","CountryAllowlist"]},"implementation":{"$ref":"#/components/schemas/EvmAddress"},"registeredAt":{"$ref":"#/components/schemas/TimestampEncoded"},"isExperimental":{"type":"boolean","description":"True when this compliance module type is experimental and stays out of a default migration.","examples":[false,true]}},"required":["id","typeId","name","implementation","registeredAt","isExperimental"],"additionalProperties":false},"DirectoryTokenType":{"type":"object","properties":{"id":{"type":"string","description":"Stable 32-byte identifier for this catalog row.","examples":["0x9f2c1d7a4b83e6f05c1a9d2e7b4c60f38a51d9e2c7b4a6f18d3e0c5b7a92f4d6"]},"typeId":{"type":"string","description":"32-byte type identifier the directory registered for this catalog entry.","examples":["0x626f6e6400000000000000000000000000000000000000000000000000000000"]},"name":{"type":"string","description":"Display name for this token type, such as Bond or Equity.","examples":["Bond","Equity","Fund"]},"implementation":{"$ref":"#/components/schemas/EvmAddress"},"factoryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"registeredAt":{"$ref":"#/components/schemas/TimestampEncoded"},"isExperimental":{"type":"boolean","description":"True when this token type is experimental and stays out of a default migration.","examples":[false,true]}},"required":["id","typeId","name","implementation","factoryImplementation","registeredAt","isExperimental"],"additionalProperties":false},"DirectorySystemImplementations":{"type":"object","properties":{"complianceImplementation":{"$ref":"#/components/schemas/EvmAddress"},"identityRegistryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"identityRegistryStorageImplementation":{"$ref":"#/components/schemas/EvmAddress"},"trustedIssuersRegistryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"trustedIssuersMetaRegistryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"topicSchemeRegistryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"tokenAccessManagerImplementation":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactoryRegistryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"complianceModuleRegistryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"addonRegistryImplementation":{"$ref":"#/components/schemas/EvmAddress"},"identityVerificationComplianceModule":{"$ref":"#/components/schemas/EvmAddress"},"externalTokenRegistryImplementation":{"$ref":"#/components/schemas/EvmAddress"}},"required":["complianceImplementation","identityRegistryImplementation","identityRegistryStorageImplementation","trustedIssuersRegistryImplementation","trustedIssuersMetaRegistryImplementation","topicSchemeRegistryImplementation","tokenAccessManagerImplementation","tokenFactoryRegistryImplementation","complianceModuleRegistryImplementation","addonRegistryImplementation","identityVerificationComplianceModule","externalTokenRegistryImplementation"],"additionalProperties":false,"description":"Current system implementations the directory publishes for the selected network. Use these addresses to compare a deployed system with the catalog."},"DirectoryIdentityImplementations":{"type":"object","properties":{"identityImplementation":{"$ref":"#/components/schemas/EvmAddress"},"contractIdentityImplementation":{"$ref":"#/components/schemas/EvmAddress"}},"required":["identityImplementation","contractIdentityImplementation"],"additionalProperties":false,"description":"Identity implementations the directory currently publishes for people and contracts."},"System_1":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"canResume":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"chainId":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"null"}]},{"type":"null"}]},"deployedInTransaction":{"type":"string","description":"Transaction hash where system was deployed","examples":["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]},"tokenFactoryRegistry":{"anyOf":[{"$ref":"#/components/schemas/TokenFactoryRegistry"},{"type":"null"}]},"systemAddonRegistry":{"anyOf":[{"$ref":"#/components/schemas/SystemAddonRegistry"},{"type":"null"}]},"compliance":{"anyOf":[{"$ref":"#/components/schemas/Compliance"},{"type":"null"}]},"complianceModuleRegistry":{"anyOf":[{"$ref":"#/components/schemas/ComplianceModuleRegistry"},{"type":"null"}]},"systemAccessManager":{"anyOf":[{"$ref":"#/components/schemas/SystemAccessManager"},{"type":"null"}]},"identityRegistryStorage":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/IdentityRegistry"},{"type":"null"}]},"trustedIssuersRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"topicSchemeRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"externalTokenRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}],"description":"Registry of external tokens tracked by this system. `null` before bootstrap completes."},"userPermissions":{"anyOf":[{"$ref":"#/components/schemas/UserPermissions"},{"type":"null"}],"description":"Caller permissions on this system. Omitted on unauthenticated reads."},"userIdentity":{"anyOf":[{"$ref":"#/components/schemas/UserIdentity"},{"type":"null"}],"description":"Caller's identity on this system. `address` means an identity contract exists. `registered` means the identity is ACTIVE in the registry."},"status":{"$ref":"#/components/schemas/SystemStatus"},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Last update timestamp from deployment tracking"},"userIdentityRegistered":{"type":"boolean","description":"Whether the current user's identity is registered in the identity registry","examples":[true,false]},"isZeroGasNetwork":{"type":"boolean","description":"Whether the active chain charges no gas (zero base fee)","examples":[true,false]}},"required":["id","deployedInTransaction","tokenFactoryRegistry","systemAddonRegistry","compliance","complianceModuleRegistry","systemAccessManager","identityRegistryStorage","identityRegistry","trustedIssuersRegistry","topicSchemeRegistry","externalTokenRegistry","status","updatedAt","userIdentityRegistered","isZeroGasNetwork"],"additionalProperties":false,"description":"The deployed system, its registries, and the caller's permissions on that system. Registry fields are null until bootstrap finishes and the indexer stores them."},"SystemListItem":{"type":"object","properties":{"id":{"type":"string","description":"System contract address as the indexer stored it.","examples":["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]}},"required":["id"],"additionalProperties":false,"description":"One deployed system in the v1 list. `id` is the system contract address as the indexer stored it."},"AddonFactoryReadV1Output":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Display name of the addon factory.","examples":["Northwind XvP Settlement","Yield Schedule Factory"]},"typeId":{"$ref":"#/components/schemas/AddonFactoryTypeIdWithVault_2"},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":{"type":"string","enum":["xvp","yield","airdrops","custody"],"description":"Short v1 family for this addon: `xvp`, `yield`, `airdrops`, or `custody`.","examples":["xvp","yield"]}},"required":["id","name","typeId","type"],"additionalProperties":false,"description":"One addon factory and the v1 type family (`xvp`, `yield`, `airdrops`, or `custody`) the platform maps it to."},"AddonFactoryTypeIdWithVault_2":{"type":"string","enum":["push-airdrop","vesting-airdrop","time-bound-airdrop","fixed-yield-schedule","xvp-settlement","trading-venue","token-sale","historical-balances-feature-factory","maturity-redemption-feature-factory","hold-feature-factory","transaction-fee-feature-factory","transaction-fee-accounting-feature-factory","voting-power-feature-factory","external-transaction-fee-feature-factory","fixed-treasury-yield-feature-factory","dividend-yield-feature-factory","interest-yield-feature-factory","aum-fee-feature-factory","conversion-feature-factory","conversion-minter-feature-factory","distribution-waterfall-feature-factory","permit-feature-factory","scalar-feed-aggregator-adapter-factory","issuer-signed-scalar-feed","paymaster-signer","token-governance","token-governance-timelock","document-anchor-registry","access-manager","price-resolver","unknown","vault"],"description":"Canonical addon type, such as `xvp-settlement`.","examples":["xvp-settlement","fixed-yield-schedule"]},"EvmAddress_2":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Addon factory contract to read.","examples":["0xdD2FD4581271e230360230F9337D5c0430Bf44C0"]},"System":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"canResume":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"chainId":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"null"}]},{"type":"null"}]},"deployedInTransaction":{"type":"string","description":"Transaction hash where system was deployed","examples":["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]},"tokenFactoryRegistry":{"anyOf":[{"$ref":"#/components/schemas/TokenFactoryRegistry"},{"type":"null"}]},"systemAddonRegistry":{"anyOf":[{"$ref":"#/components/schemas/SystemAddonRegistry"},{"type":"null"}]},"compliance":{"anyOf":[{"$ref":"#/components/schemas/Compliance"},{"type":"null"}]},"complianceModuleRegistry":{"anyOf":[{"$ref":"#/components/schemas/ComplianceModuleRegistry"},{"type":"null"}]},"systemAccessManager":{"anyOf":[{"$ref":"#/components/schemas/SystemAccessManager"},{"type":"null"}]},"identityRegistryStorage":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"identityRegistry":{"anyOf":[{"$ref":"#/components/schemas/IdentityRegistry"},{"type":"null"}]},"trustedIssuersRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"topicSchemeRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}]},"externalTokenRegistry":{"anyOf":[{"$ref":"#/components/schemas/RegistryId"},{"type":"null"}],"description":"Registry of external tokens tracked by this system. `null` before bootstrap completes."},"userPermissions":{"anyOf":[{"$ref":"#/components/schemas/UserPermissions"},{"type":"null"}],"description":"Caller permissions on this system. Omitted on unauthenticated reads."},"userIdentity":{"anyOf":[{"$ref":"#/components/schemas/UserIdentity"},{"type":"null"}],"description":"Caller's identity on this system. `address` means an identity contract exists. `registered` means the identity is ACTIVE in the registry."},"status":{"$ref":"#/components/schemas/SystemStatus"},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"Last update timestamp from deployment tracking"},"userIdentityRegistered":{"type":"boolean","description":"Whether the current user's identity is registered in the identity registry","examples":[true,false]},"isZeroGasNetwork":{"type":"boolean","description":"Whether the active chain charges no gas (zero base fee)","examples":[true,false]}},"required":["id","deployedInTransaction","tokenFactoryRegistry","systemAddonRegistry","compliance","complianceModuleRegistry","systemAccessManager","identityRegistryStorage","identityRegistry","trustedIssuersRegistry","topicSchemeRegistry","externalTokenRegistry","status","updatedAt","userIdentityRegistered","isZeroGasNetwork"],"additionalProperties":false,"description":"The active system after the addon-factory registration is accepted. Registry fields reflect indexed state, so a just-created factory appears after the indexer catches up."},"SystemAddonCreate":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_2"},"addons":{"type":"array","items":{"$ref":"#/components/schemas/SystemAddonConfig"},"minItems":1}},"required":["addons"],"additionalProperties":false,"description":"Addon factories to register on the active system. Send at least one addon type and name. Omit `implementation` to use the directory catalog for the selected network. Repeat the same body only with the same wallet verification when the signing wallet requires a challenge."},"SystemAddonConfig":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/AddonTypeV1Input_1"},"name":{"type":"string","minLength":1,"maxLength":50,"description":"Display name for the new addon factory. Maximum length is 50 characters.","examples":["Northwind XvP Settlement"]},"implementation":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Implementation to register. Omit this field to use the implementation the directory currently publishes.","examples":["0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65"]}},"required":["type","name"],"additionalProperties":false},"AddonTypeV1Input_1":{"type":"string","enum":["push-airdrop","vesting-airdrop","time-bound-airdrop","fixed-yield-schedule","xvp-settlement","trading-venue","token-sale","historical-balances-feature-factory","maturity-redemption-feature-factory","hold-feature-factory","transaction-fee-feature-factory","transaction-fee-accounting-feature-factory","voting-power-feature-factory","external-transaction-fee-feature-factory","fixed-treasury-yield-feature-factory","dividend-yield-feature-factory","interest-yield-feature-factory","aum-fee-feature-factory","conversion-feature-factory","conversion-minter-feature-factory","distribution-waterfall-feature-factory","permit-feature-factory","scalar-feed-aggregator-adapter-factory","issuer-signed-scalar-feed","paymaster-signer","token-governance","token-governance-timelock","document-anchor-registry","access-manager","price-resolver","airdrops","yield","xvp"],"description":"Addon type to register, such as `xvp-settlement`.","examples":["xvp-settlement"]},"OptionalUserVerification_2":{"anyOf":[{"$ref":"#/components/schemas/UserVerification_2"},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification.","examples":[{"secretVerificationCode":"847291","verificationType":"OTP"}]},"SystemAddon":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Display name of the addon factory, such as Northwind XvP Settlement.","examples":["Northwind XvP Settlement","Yield Schedule"]},"typeId":{"$ref":"#/components/schemas/AddonFactoryTypeIdWithVault"},"deployedInTransaction":{"$ref":"#/components/schemas/EthereumHashEncoded"},"account":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id","name","typeId","deployedInTransaction","account"],"additionalProperties":false,"description":"One addon factory registered on the active system. `deployedInTransaction` is the hash that created it, and `account` is the wallet that submitted that transaction."},"AddonFactoryTypeIdWithVault":{"type":"string","enum":["push-airdrop","vesting-airdrop","time-bound-airdrop","fixed-yield-schedule","xvp-settlement","trading-venue","token-sale","historical-balances-feature-factory","maturity-redemption-feature-factory","hold-feature-factory","transaction-fee-feature-factory","transaction-fee-accounting-feature-factory","voting-power-feature-factory","external-transaction-fee-feature-factory","fixed-treasury-yield-feature-factory","dividend-yield-feature-factory","interest-yield-feature-factory","aum-fee-feature-factory","conversion-feature-factory","conversion-minter-feature-factory","distribution-waterfall-feature-factory","permit-feature-factory","scalar-feed-aggregator-adapter-factory","issuer-signed-scalar-feed","paymaster-signer","token-governance","token-governance-timelock","document-anchor-registry","access-manager","price-resolver","unknown","vault"],"description":"Canonical addon type, such as `xvp-settlement` or `fixed-yield-schedule`.","examples":["xvp-settlement","fixed-yield-schedule"]},"AddonTypeV1Input":{"type":"string","enum":["push-airdrop","vesting-airdrop","time-bound-airdrop","fixed-yield-schedule","xvp-settlement","trading-venue","token-sale","historical-balances-feature-factory","maturity-redemption-feature-factory","hold-feature-factory","transaction-fee-feature-factory","transaction-fee-accounting-feature-factory","voting-power-feature-factory","external-transaction-fee-feature-factory","fixed-treasury-yield-feature-factory","dividend-yield-feature-factory","interest-yield-feature-factory","aum-fee-feature-factory","conversion-feature-factory","conversion-minter-feature-factory","distribution-waterfall-feature-factory","permit-feature-factory","scalar-feed-aggregator-adapter-factory","issuer-signed-scalar-feed","paymaster-signer","token-governance","token-governance-timelock","document-anchor-registry","access-manager","price-resolver","airdrops","yield","xvp"],"description":"Type of system addon"},"ActivityStatsOutput":{"type":"object","properties":{"timeSeries":{"type":"array","items":{"$ref":"#/components/schemas/ActivityTimeSeriesItem"},"description":"Ordered histogram buckets covering the requested range. Empty buckets may be omitted or sent with `count` 0."},"count":{"type":"integer"}},"required":["timeSeries","count"],"additionalProperties":false,"description":"Event counts and a time series for the requested account and range."},"ActivityTimeSeriesItem":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"count":{"type":"integer"}},"required":["timestamp","count"],"additionalProperties":false,"description":"One time-bucket in an activity histogram. `count` is events whose timestamp falls in this bucket."},"StatsResolvedRange":{"type":"object","properties":{"interval":{"$ref":"#/components/schemas/StatsRangeInterval"},"from":{"$ref":"#/components/schemas/TimestampEncoded_2"},"to":{"$ref":"#/components/schemas/TimestampEncoded_2"},"isPreset":{"type":"string","enum":["true","false"]}},"required":["interval","from","to","isPreset"],"additionalProperties":false,"description":"Window for the activity series. Send a named preset such as `trailing1Month`, or an explicit from/to pair with an `hour` or `day` interval."},"TimestampEncoded_2":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"}]},"EvmAddress_1":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[a-fA-F0-9]{40}$","description":"Wallet or contract whose indexed events to return.","examples":["0x2546BcD3c84621e976D8185a91A922aE77ECEc30"]},"ActivityListOutput":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"},"description":"Indexed events on this page that name the requested account."},"total":{"type":"number","description":"Number of matching events across every page, not only this page.","examples":[1,16]}},"required":["events","total"],"additionalProperties":false,"description":"Indexed events that name the requested account as sender, emitter, or an involved address, plus the matching total."},"ActivityEvent":{"type":"object","properties":{"id":{"type":"string","description":"Stable event identifier: chain, block number, and log index.","examples":["80002-18429311-12"]},"eventName":{"type":"string","description":"On-chain event name, such as `Transfer`.","examples":["Transfer"]},"txIndex":{"type":"string","description":"Index of the transaction inside the block.","examples":["12"]},"blockNumber":{"type":"string","description":"Block that included the event, as a decimal string.","examples":["18429311"]},"blockTimestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"},"emitter":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Contract that emitted the event."},"sender":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Transaction sender recorded on chain."},"metaTxSigner":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}],"description":"Wallet that signed a meta-transaction, or null when the sender submitted the transaction directly."},"displaySender":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Address to show as the actor."},"relayerKind":{"anyOf":[{"type":"string","enum":["user-operation","forwarder"]},{"type":"null"}],"description":"How a relayer submitted the transaction, or null when there was no relayer.","examples":[null,"user-operation","forwarder"]},"relayer":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}],"description":"Relayer that submitted the transaction, or null when the sender submitted it directly."},"userOpHash":{"anyOf":[{"$ref":"#/components/schemas/EthereumHashEncoded"},{"type":"null"}],"description":"User-operation hash when the transaction used account abstraction. Null otherwise.","examples":[null]},"involved":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"description":"Addresses the event named as sender, recipient, emitter, or another participant."},"values":{"type":"array","items":{"$ref":"#/components/schemas/ActivityEventValue"},"description":"Decoded event arguments when the indexer stored them."}},"required":["id","eventName","txIndex","blockNumber","blockTimestamp","transactionHash","emitter","sender","metaTxSigner","displaySender","relayerKind","relayer","userOpHash","involved"],"additionalProperties":false},"ActivityEventValue":{"type":"object","properties":{"id":{"type":"string","description":"Stable identifier for this decoded argument, usually the argument name.","examples":["from"]},"name":{"type":"string","description":"Decoded argument name from the event.","examples":["from","to","value"]},"value":{"type":"string","description":"Decoded argument value as a string. Amounts stay in the token's smallest unit.","examples":["0x2546BcD3c84621e976D8185a91A922aE77ECEc30","2500000000"]}},"required":["id","name","value"],"additionalProperties":false},"SystemRoleMutationOutput":{"type":"object","properties":{"accounts":{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"},"description":"Wallets the request applied the role change to.","examples":[["0x70997970C51812dc3A010C7d01b50e0d17dc79C8"]]},"roles":{"type":"array","items":{"$ref":"#/components/schemas/SystemAccessControlRole"},"description":"Roles the request applied.","examples":[["tokenManager"]]}},"required":["accounts","roles"],"additionalProperties":false,"description":"Accounts and roles the request applied. When the access manager already held this state, the platform still returns this body and does not queue a second transaction."},"SystemAccessControlRole":{"type":"string","enum":["admin","auditor","systemManager","tokenManager","complianceManager","claimPolicyManager","claimIssuer","identityManager","feedsManager","gasManager","tradingVenueOperator"]},"SystemParticipantRoleMutationInput":{"anyOf":[{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_2"},"role":{"$ref":"#/components/schemas/SystemAccessControlRole_1"},"participantId":{"type":"string","minLength":1,"description":"Participant whose executor wallet receives or loses the role.","examples":["prt_northwind_ops"]}},"required":["role","participantId"],"additionalProperties":false},{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_2"},"role":{"$ref":"#/components/schemas/SystemAccessControlRole_2"},"identityAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["role","identityAddress"],"additionalProperties":false}],"description":"Role grant or revoke resolved through a participant or an identity contract. Send `participantId` to target that participant's executor wallet, or send `identityAddress` to target the wallet registered to that identity."},"SystemAccessControlRole_2":{"type":"string","enum":["admin","auditor","systemManager","tokenManager","complianceManager","claimPolicyManager","claimIssuer","identityManager","feedsManager","gasManager","tradingVenueOperator"],"description":"System role to grant or revoke on the wallet registered to the identity.","examples":["tokenManager"]},"SystemAccessControlRole_1":{"type":"string","enum":["admin","auditor","systemManager","tokenManager","complianceManager","claimPolicyManager","claimIssuer","identityManager","feedsManager","gasManager","tradingVenueOperator"],"description":"System role to grant or revoke on the resolved wallet.","examples":["tokenManager"]},"SystemRoleMutationV1Input":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_2"},"account":{"$ref":"#/components/schemas/SystemRoleMutationAccounts"},"role":{"anyOf":[{"$ref":"#/components/schemas/SystemAccessControlRoleV1"},{"type":"array","items":{"$ref":"#/components/schemas/SystemAccessControlRoleV1"}}],"description":"System role or roles to grant or revoke. `addonManager` is accepted for compatibility and dropped before the contract call.","examples":["tokenManager"]}},"required":["account","role"],"additionalProperties":false,"description":"v1 role grant or revoke. `addonManager` is accepted for compatibility and dropped before the contract call. Send one account with several roles, or several accounts with one role."},"SystemAccessControlRoleV1":{"type":"string","enum":["admin","auditor","systemManager","tokenManager","complianceManager","claimPolicyManager","claimIssuer","identityManager","feedsManager","gasManager","addonManager"]},"SystemRoleMutationAccounts":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"array","items":{"$ref":"#/components/schemas/EvmAddress"}}],"description":"Wallet or wallets that receive or lose the role. Send one address, or an array of addresses with a single role.","examples":["0x70997970C51812dc3A010C7d01b50e0d17dc79C8"]},"SystemRolesReadOutput":{"type":"object","properties":{"roles":{"$ref":"#/components/schemas/SystemAccessControlRoles"},"account":{"$ref":"#/components/schemas/EvmAddress"}},"required":["roles","account"],"additionalProperties":false,"description":"Roles the access manager records for the requested account."},"SystemAccessControlRoles":{"type":"array","items":{"$ref":"#/components/schemas/AccessControlRole"},"description":"System roles the access manager currently records for this account.","examples":[["admin","systemManager"]]},"SystemRolesItem":{"type":"object","properties":{"roles":{"$ref":"#/components/schemas/SystemAccessControlRoles"},"account":{"$ref":"#/components/schemas/EvmAddress"}},"required":["roles","account"],"additionalProperties":false,"description":"Roles the access manager records for one account. Contract accounts appear unless the list request excluded them."},"DeleteOutput":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false,"description":"Whether the platform removed the compliance template."},"OrganizationComplianceTemplate":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":255},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"jurisdictions":{"type":"array","items":{"type":"string"}},"isSystem":{"type":"boolean"},"isDraft":{"type":"boolean"},"moduleSetVersion":{"anyOf":[{"type":"integer"},{"type":"null"}]},"organizationId":{"anyOf":[{"$ref":"#/components/schemas/OrganizationId"},{"type":"null"}]},"version":{"type":"integer"},"modules":{"type":"array","items":{"$ref":"#/components/schemas/TemplateModuleConfig"}},"requiredControls":{"anyOf":[{"type":"array"},{"type":"null"}]},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","name","description","jurisdictions","isSystem","isDraft","organizationId","version","modules","createdBy","createdAt","updatedAt"],"additionalProperties":false,"description":"Stored compliance template. Reuse `id` for later read, update, publish, or delete. `isDraft` is false after publish."},"TemplateModuleConfig":{"type":"object","properties":{"typeId":{"$ref":"#/components/schemas/ComplianceTypeId"},"values":{},"configurableInDesigner":{"type":"boolean"},"scope":{"$ref":"#/components/schemas/ModuleScope"}},"required":["typeId","values"],"additionalProperties":false},"ModuleScope":{"type":"object","properties":{"senderInclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExpressionNodeWithGroups"}},{"type":"null"}]},"senderExemption":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExpressionNodeWithGroups"}},{"type":"null"}]},"senderCountryInclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumeric"}},{"type":"null"}]},"senderCountryExclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumeric"}},{"type":"null"}]},"receiverInclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExpressionNodeWithGroups"}},{"type":"null"}]},"receiverExemption":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExpressionNodeWithGroups"}},{"type":"null"}]},"receiverCountryInclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumeric"}},{"type":"null"}]},"receiverCountryExclusion":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ISOCountryCodeNumeric"}},{"type":"null"}]},"executionMode":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"additionalProperties":false},"ISOCountryCodeNumeric":{"anyOf":[{"type":"string","pattern":"^\\d{1,3}$"},{"type":"number","multipleOf":1,"minimum":0,"maximum":999}]},"ExpressionNodeWithGroups":{"anyOf":[{"$ref":"#/components/schemas/ExpressionNode"},{"$ref":"#/components/schemas/ExpressionGroupOpen"},{"$ref":"#/components/schemas/ExpressionGroupClose"}]},"ExpressionGroupClose":{"type":"string","enum":[")"]},"ExpressionGroupOpen":{"type":"string","enum":["("]},"ExpressionNode":{"type":"object","properties":{"nodeType":{"$ref":"#/components/schemas/ExpressionType"},"value":{"$ref":"#/components/schemas/ApiBigIntEncoded"}},"required":["nodeType","value"],"additionalProperties":false},"ExpressionType":{"type":"number","enum":[0,1,2,3],"description":"Expression type identifier"},"ComplianceTypeId":{"type":"string","enum":["address-block-list","address-block-list-v2","capital-raise-limit","capped","capped-v2","claim-expiry","collateral","collateral-v2","country-allow-list","country-allow-list-v2","country-block-list","country-block-list-v2","identity-allow-list","identity-allow-list-v2","identity-block-list","identity-block-list-v2","identity-verification","identity-verification-v2","investor-count","investor-count-v2","identity-count","issuance-volume-limit","minimum-holding","time-lock","time-lock-v2","token-supply-limit","transfer-approval","transfer-approval-v2"],"description":"Compliance module typeId identifier"},"ComplianceTemplateJurisdictions":{"type":"array","items":{"type":"string"}},"CreateInputWire":{"type":"object","properties":{"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"jurisdictions":{"anyOf":[{"$ref":"#/components/schemas/ComplianceTemplateJurisdictions"},{"type":"null"}]},"moduleSetVersion":{"anyOf":[{"type":"number","enum":[1,2]},{"type":"null"}]},"legacy":{"anyOf":[{"type":"boolean","description":"Deprecated. Use `moduleSetVersion` instead."},{"type":"null"}]},"modules":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TemplateModuleConfig"}},{"type":"null"}]},"requiredControls":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ComplianceTypeId"}},{"type":"null"}]}},"required":["name"],"additionalProperties":false,"description":"Compliance template to create. `name` is trimmed. Omitted jurisdictions, modules, and requiredControls become empty arrays. The stored record starts as a draft."},"ComplianceTemplatesListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ComplianceTemplate"}},"total":{"type":"integer","minimum":0},"limit":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":200},{"type":"null"}]},"offset":{"type":"integer","minimum":0}},"required":["items","total","offset"],"additionalProperties":false,"description":"Paginated list of compliance templates"},"ComplianceTemplate":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":255},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"jurisdictions":{"type":"array","items":{"type":"string"}},"isSystem":{"type":"boolean"},"isDraft":{"type":"boolean"},"moduleSetVersion":{"anyOf":[{"type":"integer"},{"type":"null"}]},"organizationId":{"anyOf":[{"$ref":"#/components/schemas/OrganizationId"},{"type":"null"}]},"version":{"type":"integer"},"modules":{"type":"array","items":{"$ref":"#/components/schemas/TemplateModuleConfig"}},"requiredControls":{"anyOf":[{"type":"array"},{"type":"null"}]},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["id","name","description","jurisdictions","isSystem","isDraft","organizationId","version","modules","createdBy","createdAt","updatedAt"],"additionalProperties":false,"description":"Complete compliance template with all fields"},"JurisdictionFilter":{"anyOf":[{"$ref":"#/components/schemas/JurisdictionCode"},{"type":"string","enum":["GLOBAL"]}],"description":"Jurisdiction filter: a GLEIF code or 'GLOBAL' for global templates"},"JurisdictionCode":{"anyOf":[{"type":"string"},{"type":"string","enum":["EU","EEA","UN"]}]},"GlobalThemeSetOutput":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false,"description":"Whether the platform stored the global theme source."},"GlobalThemeSet":{"type":"object","properties":{"orgId":{"anyOf":[{"$ref":"#/components/schemas/OrganizationId"},{"type":"null"}]}},"required":["orgId"],"additionalProperties":false,"description":"Organization to use as the global theme source, or null to turn global theming off. Only a platform administrator can write this."},"GlobalThemeGetOutput":{"type":"object","properties":{"orgId":{"anyOf":[{"$ref":"#/components/schemas/OrganizationId"},{"type":"null"}]},"orgName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["orgId","orgName"],"additionalProperties":false,"description":"Organization whose theme every tenant inherits. Both fields are null when global theming is off."},"PublicConfigGetOutputSchemaV1":{"type":"object","properties":{"app":{"type":"object","properties":{"url":{"type":"string"},"logLevel":{"type":"string","enum":["debug","info","warn","error"]},"isDevelopment":{"type":"boolean"}},"required":["url","logLevel","isDevelopment"],"additionalProperties":false},"explorer":{"type":"object","properties":{"url":{"$ref":"#/components/schemas/HTTPURL"}},"additionalProperties":false},"auth":{"type":"object","properties":{"enforce2fa":{"type":"boolean"},"restrictOrgCreationToAdmin":{"type":"boolean"},"oidcProviders":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"string"}},"required":["id","displayName"],"additionalProperties":false}}},"required":["enforce2fa","restrictOrgCreationToAdmin","oidcProviders"],"additionalProperties":false},"features":{"type":"object","properties":{"multiTenancy":{"type":"boolean"},"i18nLanguageSelector":{"type":"boolean"},"changeEmail":{"type":"boolean"},"tokenSale":{"type":"boolean"},"accountAbstraction":{"type":"boolean"},"legacyComplianceTemplates":{"type":"boolean"},"legacyAssetCreation":{"type":"boolean"},"canton":{"type":"boolean"},"experimentalWalletVerification":{"type":"boolean"}},"required":["multiTenancy","i18nLanguageSelector","changeEmail","tokenSale","accountAbstraction","legacyComplianceTemplates","legacyAssetCreation","canton","experimentalWalletVerification"],"additionalProperties":false},"email":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"support":{"type":"object","properties":{"email":{"type":"string"},"consentTitle":{"type":"string"},"consentDescription":{"type":"string"}},"required":["email","consentTitle","consentDescription"],"additionalProperties":false},"hasOrganizations":{"type":"boolean"},"custodyDefaultProvider":{"type":"string"},"custodyDefaultEndpointHost":{"type":"string"},"sentry":{"type":"object","properties":{"dsn":{"type":"string"},"environment":{"type":"string"}},"required":["environment"],"additionalProperties":false}},"required":["app","explorer","auth","features","email","support","hasOrganizations","custodyDefaultProvider","sentry"],"additionalProperties":false,"description":"Public client configuration for v1 callers. Includes the inert `sentry` block and `features.experimentalWalletVerification`, which is always false."},"HTTPURL":{"type":"string","maxLength":2048},"ThemeLogoProxyUploadOutput":{"type":"object","properties":{"mode":{"type":"string","enum":["light","dark","lightIcon","darkIcon","authLight","authDark","authOverlayLight","authOverlayDark","backgroundLight","backgroundDark","favicon","appleTouchIcon","favicon96","faviconSvg"]},"objectKey":{"type":"string"},"publicUrl":{"type":"string"},"etag":{"type":"string"}},"required":["mode","objectKey","publicUrl"],"additionalProperties":false,"description":"Stored logo after a proxy upload. `publicUrl` is the object the theme can reference."},"ThemeLogoProxyUpload":{"type":"object","properties":{"mode":{"type":"string","enum":["light","dark","lightIcon","darkIcon","authLight","authDark","authOverlayLight","authOverlayDark","backgroundLight","backgroundDark","favicon","appleTouchIcon","favicon96","faviconSvg"]},"fileName":{"type":"string","minLength":1,"maxLength":255},"contentType":{"type":"string","enum":["image/svg+xml","image/png","image/jpeg","image/webp","image/x-icon","image/vnd.microsoft.icon"]},"fileData":{"type":"string","minLength":1,"maxLength":7340032},"previousUrl":{"type":"string"}},"required":["mode","fileName","contentType","fileData"],"additionalProperties":false},"ThemeLogoUploadOutput":{"type":"object","properties":{"mode":{"type":"string","enum":["light","dark","lightIcon","darkIcon","authLight","authDark","authOverlayLight","authOverlayDark","backgroundLight","backgroundDark","favicon","appleTouchIcon","favicon96","faviconSvg"]},"bucket":{"type":"string"},"objectKey":{"type":"string"},"publicUrl":{"type":"string"},"uploadUrl":{"$ref":"#/components/schemas/HTTPURL"},"method":{"type":"string","enum":["PUT"]},"headers":{"type":"object","additionalProperties":{"type":"string"}},"expiresAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["mode","bucket","objectKey","publicUrl","uploadUrl","method"],"additionalProperties":false,"description":"Upload target for one logo slot. PUT the file bytes to `uploadUrl`. `publicUrl` is where the object will be readable after the upload."},"ThemeLogoUpload":{"type":"object","properties":{"mode":{"type":"string","enum":["light","dark","lightIcon","darkIcon","authLight","authDark","authOverlayLight","authOverlayDark","backgroundLight","backgroundDark","favicon","appleTouchIcon","favicon96","faviconSvg"]},"fileName":{"type":"string","minLength":1,"maxLength":255},"contentType":{"type":"string","enum":["image/svg+xml","image/png","image/jpeg","image/webp","image/x-icon","image/vnd.microsoft.icon"]},"fileSize":{"type":"integer"},"previousUrl":{"type":"string"}},"required":["mode","fileName","contentType","fileSize"],"additionalProperties":false,"description":"Logo or image slot to upload. `fileSize` must be between 1 byte and 5 MiB. The platform returns a PUT URL; this call does not store the file bytes."},"ThemePreviewOutput":{"type":"object","properties":{"theme":{"$ref":"#/components/schemas/ThemeConfig"},"expiresAt":{"type":"integer"}},"required":["theme","expiresAt"],"additionalProperties":false,"description":"Temporary preview of the stored theme plus the requested diff. `expiresAt` is a Unix timestamp in seconds. The stored theme is unchanged."},"ThemeConfig":{"type":"object","properties":{"logo":{"$ref":"#/components/schemas/ThemeLogo"},"images":{"$ref":"#/components/schemas/ThemeImages"},"fonts":{"type":"object","properties":{"sans":{"$ref":"#/components/schemas/ThemeFont"},"mono":{"$ref":"#/components/schemas/ThemeFont"}},"required":["sans","mono"],"additionalProperties":false},"cssVars":{"type":"object","properties":{"light":{"$ref":"#/components/schemas/ThemeVariables"},"dark":{"$ref":"#/components/schemas/ThemeVariables"}},"required":["light","dark"],"additionalProperties":false},"metadata":{"$ref":"#/components/schemas/ThemeMetadata"}},"required":["logo","images","fonts","cssVars","metadata"],"additionalProperties":false},"ThemeMetadata":{"type":"object","properties":{"version":{"type":"integer","minimum":1},"updatedBy":{"type":"string","minLength":1},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"previewHash":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["updatedBy","updatedAt"],"additionalProperties":false},"ThemeVariables":{"type":"object","properties":{"sm-text":{"$ref":"#/components/schemas/CSSColor"},"sm-text-strong":{"$ref":"#/components/schemas/CSSColor"},"sm-text-default":{"$ref":"#/components/schemas/CSSColor"},"sm-text-subtle":{"$ref":"#/components/schemas/CSSColor"},"sm-text-disabled":{"$ref":"#/components/schemas/CSSColor"},"sm-text-contrast":{"$ref":"#/components/schemas/CSSColor"},"sm-accent":{"$ref":"#/components/schemas/CSSColor"},"sm-accent-hover":{"$ref":"#/components/schemas/CSSColor"},"sm-background-darkest":{"$ref":"#/components/schemas/CSSColor"},"sm-background-lightest":{"$ref":"#/components/schemas/CSSColor"},"sm-background-gradient-start":{"$ref":"#/components/schemas/CSSColor"},"sm-background-gradient-end":{"$ref":"#/components/schemas/CSSColor"},"sm-state-success":{"$ref":"#/components/schemas/CSSColor"},"sm-state-success-background":{"$ref":"#/components/schemas/CSSColor"},"sm-state-success-fg-deep":{"$ref":"#/components/schemas/CSSColor"},"sm-state-warning":{"$ref":"#/components/schemas/CSSColor"},"sm-state-warning-background":{"$ref":"#/components/schemas/CSSColor"},"sm-state-warning-fg-deep":{"$ref":"#/components/schemas/CSSColor"},"sm-state-info":{"$ref":"#/components/schemas/CSSColor"},"sm-state-info-background":{"$ref":"#/components/schemas/CSSColor"},"sm-state-info-fg-deep":{"$ref":"#/components/schemas/CSSColor"},"sm-state-error":{"$ref":"#/components/schemas/CSSColor"},"sm-state-error-background":{"$ref":"#/components/schemas/CSSColor"},"sm-graphics-primary":{"$ref":"#/components/schemas/CSSColor"},"sm-graphics-secondary":{"$ref":"#/components/schemas/CSSColor"},"sm-graphics-tertiary":{"$ref":"#/components/schemas/CSSColor"},"sm-graphics-quaternary":{"$ref":"#/components/schemas/CSSColor"},"sm-colored-shadow":{"$ref":"#/components/schemas/CSSColor"},"sm-inset-shadow":{"$ref":"#/components/schemas/CSSColor"},"sm-muted":{"$ref":"#/components/schemas/CSSColor"},"sm-border":{"$ref":"#/components/schemas/CSSColor"},"sm-border-subtle":{"$ref":"#/components/schemas/CSSColor"},"sm-sidebar-gradient-start":{"$ref":"#/components/schemas/CSSColor"},"sm-sidebar-gradient-mid":{"$ref":"#/components/schemas/CSSColor"},"sm-sidebar-gradient-end":{"$ref":"#/components/schemas/CSSColor"},"radius":{"$ref":"#/components/schemas/CSSColor"}},"required":["sm-text","sm-text-strong","sm-text-default","sm-text-subtle","sm-text-disabled","sm-text-contrast","sm-accent","sm-accent-hover","sm-background-darkest","sm-background-lightest","sm-background-gradient-start","sm-background-gradient-end","sm-state-success","sm-state-success-background","sm-state-success-fg-deep","sm-state-warning","sm-state-warning-background","sm-state-warning-fg-deep","sm-state-info","sm-state-info-background","sm-state-info-fg-deep","sm-state-error","sm-state-error-background","sm-graphics-primary","sm-graphics-secondary","sm-graphics-tertiary","sm-graphics-quaternary","sm-colored-shadow","sm-inset-shadow","sm-muted","sm-border","sm-border-subtle","sm-sidebar-gradient-start","sm-sidebar-gradient-mid","sm-sidebar-gradient-end","radius"],"additionalProperties":false},"CSSColor":{"type":"string","maxLength":256},"ThemeFont":{"type":"object","properties":{"family":{"type":"string","minLength":1,"maxLength":100},"source":{"type":"string","enum":["fontsource","google","custom"]},"weights":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":100,"maximum":900}},{"type":"null"}]},"preload":{"type":"boolean"},"url":{"anyOf":[{"$ref":"#/components/schemas/HTTPURL"},{"type":"null"}]}},"required":["family","source"],"additionalProperties":false},"ThemeImages":{"type":"object","properties":{"authOverlayLightUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"authOverlayDarkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"backgroundLightUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"backgroundDarkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"faviconUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"appleTouchIconUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"favicon96Url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"faviconSvgUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"etag":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]}},"additionalProperties":false},"ThemeLogo":{"type":"object","properties":{"lightUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"darkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"lightIconUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"darkIconUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"authLightUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"authDarkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"alt":{"type":"string","maxLength":200},"width":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"etag":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]}},"additionalProperties":false},"ThemePreview":{"type":"object","properties":{"diff":{"anyOf":[{"type":"object","properties":{"logo":{"anyOf":[{"type":"object","properties":{"lightUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"darkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"lightIconUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"darkIconUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"authLightUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"authDarkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"alt":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"etag":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"images":{"anyOf":[{"type":"object","properties":{"authOverlayLightUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"authOverlayDarkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"backgroundLightUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"backgroundDarkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"faviconUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"appleTouchIconUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"favicon96Url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"faviconSvgUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"etag":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"fonts":{"anyOf":[{"type":"object","properties":{"sans":{"anyOf":[{"$ref":"#/components/schemas/ThemeFontPartial"},{"type":"null"}]},"mono":{"anyOf":[{"$ref":"#/components/schemas/ThemeFontPartial"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"cssVars":{"anyOf":[{"type":"object","properties":{"light":{"anyOf":[{"type":"object","properties":{"sm-text":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-strong":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-default":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-subtle":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-disabled":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-contrast":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-accent":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-accent-hover":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-background-darkest":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-background-lightest":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-background-gradient-start":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-background-gradient-end":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-success":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-success-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-success-fg-deep":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-warning":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-warning-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-warning-fg-deep":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info-fg-deep":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-error":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-error-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-graphics-primary":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-graphics-secondary":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-graphics-tertiary":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-graphics-quaternary":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-colored-shadow":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-inset-shadow":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-muted":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-border":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-border-subtle":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-start":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-mid":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-end":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"radius":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"dark":{"anyOf":[{"type":"object","properties":{"sm-text":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-strong":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-default":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-subtle":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-disabled":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-contrast":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-accent":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-accent-hover":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-background-darkest":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-background-lightest":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-background-gradient-start":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-background-gradient-end":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-success":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-success-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-success-fg-deep":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-warning":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-warning-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-warning-fg-deep":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info-fg-deep":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-error":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-error-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-graphics-primary":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-graphics-secondary":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-graphics-tertiary":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-graphics-quaternary":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-colored-shadow":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-inset-shadow":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-muted":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-border":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-border-subtle":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-start":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-mid":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-end":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"radius":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"metadata":{"anyOf":[{"type":"object","properties":{"version":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}]},"updatedBy":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}]},"previewHash":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"ttlSeconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":300},{"type":"null"}]},"baseVersion":{"type":"integer","minimum":1}},"required":["baseVersion"],"additionalProperties":false},"ThemeFontPartial":{"type":"object","properties":{"family":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"source":{"anyOf":[{"type":"string","enum":["fontsource","google","custom"]},{"type":"null"}]},"weights":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":100,"maximum":900}},{"type":"null"}]},"preload":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"url":{"anyOf":[{"$ref":"#/components/schemas/HTTPURL"},{"type":"null"}]}},"additionalProperties":false},"ThemeUpdateOutput":{"type":"object","properties":{"theme":{"$ref":"#/components/schemas/ThemeConfig"},"success":{"type":"boolean"}},"required":["theme","success"],"additionalProperties":false,"description":"The stored theme after the write. `success` is true when the platform persisted the configuration. Send `theme.metadata.version` on the next write."},"ThemeConfigV1":{"type":"object","properties":{"logo":{"$ref":"#/components/schemas/ThemeLogo"},"images":{"$ref":"#/components/schemas/ThemeImages"},"fonts":{"type":"object","properties":{"sans":{"$ref":"#/components/schemas/ThemeFont"},"mono":{"$ref":"#/components/schemas/ThemeFont"}},"required":["sans","mono"],"additionalProperties":false},"cssVars":{"type":"object","properties":{"light":{"$ref":"#/components/schemas/ThemeVarsV1"},"dark":{"$ref":"#/components/schemas/ThemeVarsV1"}},"required":["light","dark"],"additionalProperties":false},"metadata":{"$ref":"#/components/schemas/ThemeMetadata"}},"required":["logo","images","fonts","cssVars","metadata"],"additionalProperties":false},"ThemeVarsV1":{"type":"object","properties":{"sm-text":{"$ref":"#/components/schemas/CSSColor"},"sm-text-strong":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-default":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-subtle":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-disabled":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-text-contrast":{"$ref":"#/components/schemas/CSSColor"},"sm-accent":{"$ref":"#/components/schemas/CSSColor"},"sm-accent-hover":{"$ref":"#/components/schemas/CSSColor"},"sm-background-darkest":{"$ref":"#/components/schemas/CSSColor"},"sm-background-lightest":{"$ref":"#/components/schemas/CSSColor"},"sm-background-gradient-start":{"$ref":"#/components/schemas/CSSColor"},"sm-background-gradient-end":{"$ref":"#/components/schemas/CSSColor"},"sm-state-success":{"$ref":"#/components/schemas/CSSColor"},"sm-state-success-background":{"$ref":"#/components/schemas/CSSColor"},"sm-state-success-fg-deep":{"$ref":"#/components/schemas/CSSColor"},"sm-state-warning":{"$ref":"#/components/schemas/CSSColor"},"sm-state-warning-background":{"$ref":"#/components/schemas/CSSColor"},"sm-state-warning-fg-deep":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info-background":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-info-fg-deep":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-state-error":{"$ref":"#/components/schemas/CSSColor"},"sm-state-error-background":{"$ref":"#/components/schemas/CSSColor"},"sm-graphics-primary":{"$ref":"#/components/schemas/CSSColor"},"sm-graphics-secondary":{"$ref":"#/components/schemas/CSSColor"},"sm-graphics-tertiary":{"$ref":"#/components/schemas/CSSColor"},"sm-graphics-quaternary":{"$ref":"#/components/schemas/CSSColor"},"sm-colored-shadow":{"$ref":"#/components/schemas/CSSColor"},"sm-inset-shadow":{"$ref":"#/components/schemas/CSSColor"},"sm-muted":{"$ref":"#/components/schemas/CSSColor"},"sm-border":{"$ref":"#/components/schemas/CSSColor"},"sm-border-subtle":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-start":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-mid":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"sm-sidebar-gradient-end":{"anyOf":[{"$ref":"#/components/schemas/CSSColor"},{"type":"null"}]},"radius":{"$ref":"#/components/schemas/CSSColor"}},"required":["sm-text","sm-text-contrast","sm-accent","sm-accent-hover","sm-background-darkest","sm-background-lightest","sm-background-gradient-start","sm-background-gradient-end","sm-state-success","sm-state-success-background","sm-state-success-fg-deep","sm-state-warning","sm-state-warning-background","sm-state-error","sm-state-error-background","sm-graphics-primary","sm-graphics-secondary","sm-graphics-tertiary","sm-graphics-quaternary","sm-colored-shadow","sm-inset-shadow","sm-muted","sm-border","radius"],"additionalProperties":false},"OrganizationThemeConfig":{"type":"object","properties":{"logo":{"$ref":"#/components/schemas/ThemeLogo"},"images":{"$ref":"#/components/schemas/ThemeImages"},"fonts":{"type":"object","properties":{"sans":{"$ref":"#/components/schemas/ThemeFont"},"mono":{"$ref":"#/components/schemas/ThemeFont"}},"required":["sans","mono"],"additionalProperties":false},"cssVars":{"type":"object","properties":{"light":{"$ref":"#/components/schemas/ThemeVariables"},"dark":{"$ref":"#/components/schemas/ThemeVariables"}},"required":["light","dark"],"additionalProperties":false},"metadata":{"$ref":"#/components/schemas/ThemeMetadata"}},"required":["logo","images","fonts","cssVars","metadata"],"additionalProperties":false,"description":"Effective theme for the request: organization overrides when authentication selects an organization, otherwise the global or default theme. The object includes logos, fonts, CSS tokens, and metadata.version."},"SettingKey_1":{"type":"string","enum":["BASE_CURRENCY","SYSTEM_ADDRESS","AA_ENABLED","AA_WARN_DAYS","AA_CRITICAL_DAYS","TARGET_CURRENCIES","MULTI_NETWORK_ENABLED"],"description":"Predefined setting name to delete. MULTI_NETWORK_ENABLED cannot be deleted while the organization still has added networks."},"SettingsUpsert":{"anyOf":[{"$ref":"#/components/schemas/baseCurrency"},{"$ref":"#/components/schemas/systemAddress"},{"$ref":"#/components/schemas/aaEnabled"},{"$ref":"#/components/schemas/targetCurrencies"},{"$ref":"#/components/schemas/multiNetworkEnabled"}],"description":"Setting to store. `key` selects the value shape. BASE_CURRENCY is an ISO 4217 code. TARGET_CURRENCIES is a JSON array of those codes and must keep every currency already stored. AA_ENABLED and MULTI_NETWORK_ENABLED are the strings true or false. SYSTEM_ADDRESS is an EVM address or an empty string."},"multiNetworkEnabled":{"type":"object","properties":{"key":{"type":"string","enum":["MULTI_NETWORK_ENABLED"]},"value":{"type":"string","enum":["true","false"]}},"required":["key","value"],"additionalProperties":false},"targetCurrencies":{"type":"object","properties":{"key":{"type":"string","enum":["TARGET_CURRENCIES"]},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false},"aaEnabled":{"type":"object","properties":{"key":{"type":"string","enum":["AA_ENABLED"]},"value":{"type":"string","enum":["true","false"]}},"required":["key","value"],"additionalProperties":false},"systemAddress":{"type":"object","properties":{"key":{"type":"string","enum":["SYSTEM_ADDRESS"]},"value":{"anyOf":[{"type":"string","enum":[""]},{"$ref":"#/components/schemas/EvmAddress"}]}},"required":["key","value"],"additionalProperties":false},"baseCurrency":{"type":"object","properties":{"key":{"type":"string","enum":["BASE_CURRENCY"]},"value":{"$ref":"#/components/schemas/FiatCurrency"}},"required":["key","value"],"additionalProperties":false},"SettingsListOutput":{"type":"array","items":{"$ref":"#/components/schemas/Setting"},"description":"Every stored setting for the active organization, in the requested order."},"Setting":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"},"lastUpdated":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["key","value","lastUpdated"],"additionalProperties":false,"description":"One stored setting. `key` is a predefined setting name. `value` is the stored string. `lastUpdated` is the time of the last write."},"SettingKey":{"type":"string","enum":["BASE_CURRENCY","SYSTEM_ADDRESS","AA_ENABLED","AA_WARN_DAYS","AA_CRITICAL_DAYS","TARGET_CURRENCIES","MULTI_NETWORK_ENABLED"],"description":"Predefined setting name to read. One of BASE_CURRENCY, SYSTEM_ADDRESS, AA_ENABLED, AA_WARN_DAYS, AA_CRITICAL_DAYS, TARGET_CURRENCIES, or MULTI_NETWORK_ENABLED."},"OrganizationListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationListItem"},"description":"List of organizations"},"total":{"type":"integer","minimum":0,"description":"Total count of organizations matching the query"},"limit":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}],"description":"Applied limit"},"offset":{"type":"integer","minimum":0,"description":"Applied offset"}},"required":["items","total","offset"],"additionalProperties":false,"description":"One page of organizations. `total` counts every matching organization, not only the rows on this page. `offset` is the number of rows skipped."},"OrganizationListItem":{"type":"object","properties":{"id":{"type":"string","description":"Organization this row describes."},"name":{"type":"string","description":"Display name of the organization."},"slug":{"type":"string","description":"URL-safe organization identifier."},"logo":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public URL of the organization logo, or null when none is stored."},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"archivedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"allOf":[{"description":"When the organization was archived. Null when the organization is active."}]},"ownerCount":{"type":"integer","minimum":0,"description":"How many owners the organization currently has."},"ownerEmails":{"type":"array","items":{"type":"string"},"description":"Email addresses of every current owner."},"memberCount":{"type":"integer","minimum":0,"description":"How many members the organization currently has, including owners."},"assetCount":{"type":"integer","minimum":0,"description":"How many assets the organization currently owns."}},"required":["id","name","slug","logo","createdAt","archivedAt","ownerCount","ownerEmails","memberCount","assetCount"],"additionalProperties":false},"GlobalSearchOutput":{"type":"object","properties":{"sections":{"type":"array","items":{"$ref":"#/components/schemas/GlobalSearchSection"}}},"required":["sections"],"additionalProperties":false,"description":"Permission-aware search hits grouped by resource type. The platform leaves out a section when it has no matches. The call does not change state."},"GlobalSearchSection":{"anyOf":[{"$ref":"#/components/schemas/GlobalSearchContactsSection"},{"$ref":"#/components/schemas/GlobalSearchTokensSection"},{"$ref":"#/components/schemas/GlobalSearchUsersSection"},{"$ref":"#/components/schemas/GlobalSearchParticipantsSection"},{"$ref":"#/components/schemas/GlobalSearchSystemContractsSection"}]},"GlobalSearchSystemContractsSection":{"type":"object","properties":{"type":{"type":"string","enum":["systemContracts"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/SystemContractSearchResult"}}},"required":["type","items"],"additionalProperties":false},"SystemContractSearchResult":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"Human-readable contract label, for example Token Factory."},"contractType":{"type":"string","description":"Indexed contract type name, for example TokenFactory."}},"required":["id","name","contractType"],"additionalProperties":false},"GlobalSearchParticipantsSection":{"type":"object","properties":{"type":{"type":"string","enum":["participants"]},"items":{"$ref":"#/components/schemas/ParticipantSearchOutput"}},"required":["type","items"],"additionalProperties":false},"ParticipantSearchOutput":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantSearchResult"},"description":"Organisation-participant search hits for the active organization."},"ParticipantSearchResult":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ParticipantId_1"},"name":{"type":"string","description":"Organisation display name."},"address":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Routing address on the requested chain: the organisation's smart wallet when one is deployed, otherwise its EOA. `null` until a wallet is provisioned."}},"required":["id","name","address"],"additionalProperties":false,"description":"One organisation-participant match from organization search."},"ParticipantId_1":{"type":"string","minLength":1,"description":"Organisation-participant identifier."},"GlobalSearchUsersSection":{"type":"object","properties":{"type":{"type":"string","enum":["users"]},"items":{"$ref":"#/components/schemas/UserSearchOutput"}},"required":["type","items"],"additionalProperties":false},"UserSearchOutput":{"type":"array","items":{"$ref":"#/components/schemas/UserSearchResult"},"description":"User search hits for the active organization, best-match first."},"UserSearchResult":{"type":"object","properties":{"id":{"type":"string","description":"User identifier."},"participantId":{"anyOf":[{"$ref":"#/components/schemas/ParticipantId"},{"type":"null"}],"description":"Person participant identifier used to read the user's custody accounts."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name, or `null` when the user has not set one."},"role":{"anyOf":[{"$ref":"#/components/schemas/UserRole"},{"type":"null"}]}},"required":["id","participantId","name"],"additionalProperties":false,"description":"One user match from organization search. Custody-account routes expose ledger accounts."},"UserRole":{"type":"string","enum":["admin","owner","member"],"description":"User role in the system"},"ParticipantId":{"type":"string","minLength":1,"description":"Participant identifier"},"GlobalSearchTokensSection":{"type":"object","properties":{"type":{"type":"string","enum":["tokens"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/TokenSearchResult"}}},"required":["type","items"],"additionalProperties":false},"TokenSearchResult":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"tokenFactory":{"anyOf":[{"$ref":"#/components/schemas/TokenSearchFactoryRef"},{"type":"null"}]},"type":{"$ref":"#/components/schemas/AssetTypeOrSlug"},"createdAt":{"$ref":"#/components/schemas/TimestampEncoded"},"name":{"type":"string","description":"Token name."},"symbol":{"type":"string","description":"Token symbol. May be an empty string when an external-token `symbol()` read failed. Do not assume `AssetSymbol` rules here."},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned logo URL, or `null` when none is uploaded."},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"basePrice":{"$ref":"#/components/schemas/BigDecimal"},"basePriceCurrencyCode":{"anyOf":[{"$ref":"#/components/schemas/FiatCurrency"},{"type":"null"}],"description":"ISO currency of `basePrice`, or `null` when no quote is configured."},"totalSupply":{"$ref":"#/components/schemas/BigDecimal"},"totalSupplyExact":{"type":"string","description":"Raw on-chain total supply as a decimal string."},"smartInterface":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SMART interface generation: 1 = SMARTUpgradeable, 2 = SMARTv2Upgradeable, `null` when unknown."},"pausable":{"$ref":"#/components/schemas/TokenPausable"},"templateLink":{"anyOf":[{"$ref":"#/components/schemas/TokenSearchTemplateLink"},{"type":"null"}]}},"required":["id","tokenFactory","type","createdAt","name","symbol","decimals","basePrice","basePriceCurrencyCode","totalSupply","smartInterface","pausable","templateLink"],"additionalProperties":false,"description":"One token match from search. External tokens may have an empty `symbol` and a null `tokenFactory`. Amounts are decimal-adjusted except `totalSupplyExact`."},"TokenSearchTemplateLink":{"type":"object","properties":{"templateId":{"type":"string","description":"Template identifier this token was created from."},"templateSlug":{"type":"string","description":"Template slug shown in Console URLs."}},"required":["templateId","templateSlug"],"additionalProperties":false},"TokenSearchFactoryRef":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},"GlobalSearchContactsSection":{"type":"object","properties":{"type":{"type":"string","enum":["contacts"]},"items":{"$ref":"#/components/schemas/ContactsSearchOutput"}},"required":["type","items"],"additionalProperties":false},"ContactsSearchOutput":{"type":"array","items":{"$ref":"#/components/schemas/ContactSearchResult"},"description":"Contact search hits for the active organization, best-match first."},"ContactSearchResult":{"type":"object","properties":{"id":{"type":"string","description":"Contact identifier."},"name":{"type":"string","description":"Display name stored on the contact."},"wallet":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id","name","wallet"],"additionalProperties":false,"description":"One contact match from organization search. `wallet` is the address you can send to."},"AdapterListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"adapterAddress":{"$ref":"#/components/schemas/EvmAddress"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Numeric topic identifier as a decimal string."}},"required":["adapterAddress","subject","topicId"],"additionalProperties":false}},"totalCount":{"type":"number"}},"required":["items","totalCount"],"additionalProperties":false,"description":"Offset page of adapters created by the scalar-feed adapter factory. `totalCount` is the full match count."},"AdapterCreateOutput":{"type":"object","properties":{"adapterAddress":{"$ref":"#/components/schemas/EvmAddress"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Resolved numeric topic identifier."},"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"}},"required":["adapterAddress","subject","topicId","transactionHash"],"additionalProperties":false,"description":"Accepted adapter. `adapterAddress` is the stable contract callers should read."},"OptionalUserVerification_1":{"anyOf":[{"$ref":"#/components/schemas/UserVerification_1"},{"type":"null"}],"description":"Wallet step-up proof for this write. Required when the organization enforces PIN, OTP, recovery codes, or OIDC MFA on mutations. Omit only when the deployment does not require wallet verification."},"UserVerification_1":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"IssuerSignedListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Numeric topic identifier as a decimal string."},"creator":{"$ref":"#/components/schemas/EvmAddress"}},"required":["feedAddress","subject","topicId","creator"],"additionalProperties":false}},"totalCount":{"type":"number"}},"required":["items","totalCount"],"additionalProperties":false,"description":"Offset page of feeds created by the issuer-signed factory. `totalCount` is the full match count."},"IssuerSignedCreateOutput":{"type":"object","properties":{"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Resolved numeric topic identifier."},"decimals":{"type":"number","description":"Decimal places fixed at creation."},"historyMode":{"$ref":"#/components/schemas/HistoryMode"},"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"}},"required":["feedAddress","subject","topicId","decimals","historyMode","transactionHash"],"additionalProperties":false,"description":"Accepted issuer-signed feed. `feedAddress` is the new contract, and `historyMode` is the mode it is created with, always `LATEST_ONLY`. Poll the transaction until it settles."},"HistoryMode":{"type":"string","enum":["LATEST_ONLY","BOUNDED","FULL"],"description":"How many historical rounds the feed retains. `LATEST_ONLY` keeps the newest round, `BOUNDED` keeps `historySize` rounds, and `FULL` keeps every round."},"FeedSubmitOutput":{"type":"object","properties":{"transactionHash":{"type":"string","pattern":"^(0x[a-fA-F0-9]{64})?$"},"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"value":{"type":"string","description":"Unscaled integer observation that was accepted."},"nonce":{"type":"string","description":"Issuer nonce consumed by this write."}},"required":["transactionHash","feedAddress","value","nonce"],"additionalProperties":false,"description":"Accepted observation. `nonce` is the issuer nonce consumed by this write. `transactionHash` is empty only when the write has not yet produced a hash."},"FeedSubmitBody":{"type":"object","properties":{"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification_1"},"value":{"type":"string","pattern":"^-?\\d+$","description":"Unscaled integer observation to sign and submit."},"observedAt":{"type":"integer","minimum":0,"description":"Unix timestamp in seconds when the issuer observed this value."},"deadline":{"anyOf":[{"type":"integer","minimum":0,"description":"Unix timestamp after which the submission expires. `0` means no expiry."},{"type":"null"}]}},"required":["value","observedAt"],"additionalProperties":false,"description":"Integer observation to sign and submit. `value` is the unscaled integer, `observedAt` is a Unix timestamp in seconds, and `deadline` is 0 when the submission has no expiry. The platform signs from the caller's issuer identity."},"FeedNonceOutput":{"type":"object","properties":{"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"issuerIdentity":{"$ref":"#/components/schemas/EvmAddress"},"currentNonce":{"type":"string","description":"Last issuer nonce consumed on this feed."},"nextNonce":{"type":"string","description":"Nonce to use when you assemble the following signed observation."}},"required":["feedAddress","issuerIdentity","currentNonce","nextNonce"],"additionalProperties":false,"description":"Current and next issuer nonce for this feed. Use `nextNonce` when you assemble the following signed observation. The pair is a point-in-time read, so fetch it again immediately before you sign."},"FeedConfigOutput":{"type":"object","properties":{"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Numeric topic identifier as a decimal string."},"expectedSchemaHash":{"$ref":"#/components/schemas/EthereumHashEncoded"},"decimals":{"type":"number","description":"Decimal places fixed at feed creation."},"description":{"type":"string","description":"On-chain description following the `<BASE> / <QUOTE>` convention."},"historyMode":{"$ref":"#/components/schemas/HistoryMode"},"historySize":{"type":"number","description":"Number of rounds retained when `historyMode` is `BOUNDED`."},"requirePositive":{"type":"boolean","description":"True when the feed rejects non-positive observations."},"driftAllowance":{"type":"number","description":"Maximum permitted move from the previous observation, in feed-specific units."},"domainSeparator":{"$ref":"#/components/schemas/EthereumHashEncoded"},"trustedIssuersRegistry":{"$ref":"#/components/schemas/EvmAddress"},"topicSchemeRegistry":{"$ref":"#/components/schemas/EvmAddress"}},"required":["feedAddress","subject","topicId","expectedSchemaHash","decimals","description","historyMode","historySize","requirePositive","driftAllowance","domainSeparator","trustedIssuersRegistry","topicSchemeRegistry"],"additionalProperties":false,"description":"Immutable issuer-signed feed settings. These values are fixed at creation, so the same request always returns the same configuration after the feed exists."},"FeedStalenessOutput":{"type":"object","properties":{"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"latestUpdatedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"currentTimestamp":{"$ref":"#/components/schemas/TimestampEncoded"},"ageSeconds":{"type":"number","description":"Seconds between `latestUpdatedAt` and `currentTimestamp`."},"maxAgeSeconds":{"type":"number","description":"Caller-supplied maximum acceptable age in seconds."},"isStale":{"type":"boolean","description":"True when `ageSeconds` is greater than `maxAgeSeconds`."},"roundId":{"type":"string","description":"Round number of the latest observation."},"answer":{"type":"string","description":"Unscaled integer observation that was evaluated."}},"required":["feedAddress","latestUpdatedAt","currentTimestamp","ageSeconds","maxAgeSeconds","isStale","roundId","answer"],"additionalProperties":false,"description":"Whether the latest observation is older than the caller-supplied `maxAgeSeconds`. `isStale` is true when `ageSeconds` is greater than that maximum."},"FeedRoundOutput":{"type":"object","properties":{"roundId":{"type":"string","description":"Requested historical round number."},"answer":{"type":"string","description":"Unscaled integer observation stored for this round."},"startedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"answeredInRound":{"type":"string","description":"Round that actually produced `answer`."}},"required":["roundId","answer","startedAt","updatedAt","answeredInRound"],"additionalProperties":false,"description":"One historical round. `answer` is the integer observation stored for that `roundId`."},"FeedLatestOutput":{"type":"object","properties":{"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"roundId":{"type":"string","description":"Live round number as a decimal string."},"answer":{"type":"string","description":"Unscaled integer observation for the latest round."},"decimals":{"type":"number","description":"Decimal places used to scale `answer` into `formattedAnswer`."},"formattedAnswer":{"type":"string","description":"`answer` scaled by `decimals`, as a decimal string."},"startedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"updatedAt":{"$ref":"#/components/schemas/TimestampEncoded"},"answeredInRound":{"type":"string","description":"Round that actually produced `answer`. Can differ from `roundId` after a skipped update."},"description":{"type":"string","description":"On-chain description following the `<BASE> / <QUOTE>` convention."},"version":{"type":"string","description":"Feed contract version string."}},"required":["feedAddress","roundId","answer","decimals","formattedAnswer","startedAt","updatedAt","answeredInRound","description","version"],"additionalProperties":false,"description":"Latest on-chain round for the feed. `answer` is the integer observation, `formattedAnswer` applies `decimals`, and `updatedAt` is the UTC time of that round."},"FeedRemoveOutput":{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Resolved numeric topic identifier."},"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"}},"required":["subject","topicId","transactionHash"],"additionalProperties":false,"description":"Accepted removal. The mapping is gone after the queued write settles."},"FeedReplaceOutput":{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Resolved numeric topic identifier."},"oldFeedAddress":{"$ref":"#/components/schemas/EvmAddress"},"newFeedAddress":{"$ref":"#/components/schemas/EvmAddress"},"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"}},"required":["subject","topicId","oldFeedAddress","newFeedAddress","transactionHash"],"additionalProperties":false,"description":"Accepted replacement. `oldFeedAddress` is the mapping the write retires."},"FeedKind":{"anyOf":[{"type":"string","enum":["SCALAR"]}],"description":"On-chain feed kind. `SCALAR` is a single numeric observation series."},"FeedRegisterExternalOutput":{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Resolved numeric topic identifier."},"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"kind":{"$ref":"#/components/schemas/FeedKind"},"transactionHash":{"$ref":"#/components/schemas/EthereumHashEncoded"}},"required":["subject","topicId","feedAddress","kind","transactionHash"],"additionalProperties":false,"description":"Accepted external registration. `transactionHash` is the write that stored the mapping."},"FeedReadOutput":{"type":"object","properties":{"id":{"type":"string","description":"Stable feed identifier. Equals `feedAddress` for registered feeds."},"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Numeric topic identifier as a decimal string."},"kind":{"$ref":"#/components/schemas/FeedKind"},"schemaHash":{"$ref":"#/components/schemas/EthereumHashEncoded"},"decimals":{"type":"number","description":"Decimal places used to scale `answer` into `formattedAnswer`."},"scope":{"type":"string","enum":["global","identity","asset","other"],"description":"Whether the subject is the zero address, an identity, an asset, or another binding."},"factory":{"$ref":"#/components/schemas/FeedItemFactoryOptional"},"creator":{"$ref":"#/components/schemas/FeedCreator"},"adapterAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Stable adapter address when one exists for this subject and topic. Null otherwise."},"isActive":{"type":"boolean","description":"True when this feed is the active directory mapping for its subject and topic."},"registeredAt":{"$ref":"#/components/schemas/TimestampEncoded"},"latestValue":{"$ref":"#/components/schemas/FeedLatestValueOptional"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"On-chain description following the `<BASE> / <QUOTE>` convention, for example `EUR / USD` for a global FX feed."}},"required":["id","feedAddress","subject","topicId","kind","schemaHash","decimals","scope","factory","creator","adapterAddress","isActive","registeredAt","latestValue","description"],"additionalProperties":false,"description":"One registered feed and the latest indexed observation when one exists. `subject` is the zero address for a global FX feed. `latestValue` is null until the first submission is indexed."},"FeedLatestValueOptional":{"anyOf":[{"$ref":"#/components/schemas/FeedLatestValue"},{"type":"null"}]},"FeedLatestValue":{"type":"object","properties":{"roundId":{"type":"number","description":"Round number of the latest indexed observation."},"answer":{"type":"string","description":"Unscaled integer observation for that round."},"observedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"UTC time the issuer recorded for this observation."},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"UTC time the feed last accepted this observation."},"issuer":{"$ref":"#/components/schemas/EvmAddress"},"signer":{"$ref":"#/components/schemas/EvmAddress"}},"required":["roundId","answer","observedAt","updatedAt","issuer","signer"],"additionalProperties":false},"FeedCreator":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false},{"type":"null"}]},"FeedItemFactoryOptional":{"anyOf":[{"$ref":"#/components/schemas/FeedItemFactory"},{"type":"null"}]},"FeedItemFactory":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"typeId":{"type":"string","description":"Factory type identifier, for example `issuer-signed-scalar-feed`."}},"required":["id","typeId"],"additionalProperties":false},"FeedResolveOutput":{"type":"object","properties":{"exists":{"type":"boolean","description":"True when the directory holds a mapping for this subject and topic."},"feedAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Registered feed address. Null when `exists` is false."},"kind":{"anyOf":[{"$ref":"#/components/schemas/FeedKind"},{"type":"null"}]},"schemaHash":{"anyOf":[{"$ref":"#/components/schemas/EthereumHashEncoded"},{"type":"null"}],"description":"Expected observation schema hash. Null when `exists` is false."},"adapterAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Stable adapter address when one exists. Null otherwise."},"indexed":{"anyOf":[{"type":"object","properties":{"decimals":{"type":"number","description":"Decimal places of the indexed feed."},"latestValue":{"anyOf":[{"$ref":"#/components/schemas/FeedLatestValue"},{"type":"null"}],"description":"Latest indexed observation. Null until the first submission is indexed."},"registeredAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["decimals","latestValue","registeredAt"],"additionalProperties":false},{"type":"null"}],"description":"Indexed fields. Null until Ledger Index has processed the registration."}},"required":["exists","feedAddress","kind","schemaHash","adapterAddress","indexed"],"additionalProperties":false,"description":"Registration for one subject and topic. `exists` is false and the remaining fields are null when the directory has no mapping. Indexed fields appear only after the indexer has processed the registration."},"FeedListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/FeedItem"}},"totalCount":{"type":"number"}},"required":["items","totalCount"],"additionalProperties":false,"description":"Offset page of registered feeds. `totalCount` is the full match count. Repeat the call with a new `skip` to walk the remaining rows."},"FeedItem":{"type":"object","properties":{"id":{"type":"string","description":"Stable feed identifier. Equals `feedAddress` for registered feeds."},"feedAddress":{"$ref":"#/components/schemas/EvmAddress"},"subject":{"$ref":"#/components/schemas/EvmAddress"},"topicId":{"type":"string","description":"Numeric topic identifier as a decimal string."},"kind":{"$ref":"#/components/schemas/FeedKind"},"schemaHash":{"$ref":"#/components/schemas/EthereumHashEncoded"},"decimals":{"type":"number","description":"Decimal places used to scale `answer` into `formattedAnswer`."},"scope":{"type":"string","enum":["global","identity","asset","other"],"description":"Whether the subject is the zero address, an identity, an asset, or another binding."},"factory":{"$ref":"#/components/schemas/FeedItemFactoryOptional"},"creator":{"$ref":"#/components/schemas/FeedCreator"},"adapterAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Stable adapter address when one exists for this subject and topic. Null otherwise."},"isActive":{"type":"boolean","description":"True when this feed is the active directory mapping for its subject and topic."},"registeredAt":{"$ref":"#/components/schemas/TimestampEncoded"},"latestValue":{"$ref":"#/components/schemas/FeedLatestValueOptional"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"On-chain description following the `<BASE> / <QUOTE>` convention, for example `EUR / USD` for a global FX feed."}},"required":["id","feedAddress","subject","topicId","kind","schemaHash","decimals","scope","factory","creator","adapterAddress","isActive","registeredAt","latestValue","description"],"additionalProperties":false,"description":"One registered feed and the latest indexed observation when one exists. `subject` is the zero address for a global FX feed. `latestValue` is null until the first submission is indexed."},"FeedsCapabilitiesOutput":{"type":"object","properties":{"feedsDirectory":{"type":"object","properties":{"installed":{"type":"boolean","description":"True when the feed directory is installed on the selected chain."},"address":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Feed directory address. Null when the directory is not installed."}},"required":["installed","address"],"additionalProperties":false},"issuerSignedScalarFeedFactory":{"$ref":"#/components/schemas/AddonCapability"},"scalarFeedAggregatorAdapterFactory":{"$ref":"#/components/schemas/AddonCapability"},"priceResolver":{"$ref":"#/components/schemas/AddonCapability"},"supportedFeedKinds":{"type":"array","items":{"$ref":"#/components/schemas/FeedKind"},"description":"Feed kinds the selected chain currently accepts."},"chainId":{"type":"number","description":"Decimal EVM chain identifier these capabilities describe."}},"required":["feedsDirectory","issuerSignedScalarFeedFactory","scalarFeedAggregatorAdapterFactory","priceResolver","supportedFeedKinds","chainId"],"additionalProperties":false,"description":"Installation state of the feed directory, issuer-signed factory, and adapter factory on the selected chain. `address` is null when that component is not installed. The call is safe to repeat."},"AddonCapability":{"type":"object","properties":{"installed":{"type":"boolean","description":"True when this factory or directory is installed on the selected chain."},"address":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"Installed contract address. Null when the component is not installed."},"typeId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Factory type identifier when the component is a factory."}},"required":["installed","address"],"additionalProperties":false},"ExchangeRatesHistoryOutput":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeRateHistoryItem"},"description":"Historical observations for one base and quote pair, newest first within the requested window. The array is empty when the pair has no observations in that window. The call is safe to repeat."},"ExchangeRateHistoryItem":{"type":"object","properties":{"baseCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"quoteCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"rate":{"type":"number","description":"Units of quote currency per one unit of base currency at `effectiveAt`."},"effectiveAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["baseCurrency","quoteCurrency","rate","effectiveAt"],"additionalProperties":false,"description":"One historical observation for a currency pair. `rate` is quote per one base unit at `effectiveAt`."},"TimestampEncoded_1":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"string","description":"Epoch milliseconds as a digit string, or a readable datetime.","format":"timestamp"}]},"ExchangeRatesListOutput":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeRateListItem"}},"totalCount":{"type":"number"},"offset":{"type":"number"},"limit":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["items","totalCount","offset"],"additionalProperties":false,"description":"Offset page of configured exchange-rate pairs. `totalCount` is the full match count, not the length of `items`. Repeat the call with a new `offset` to walk the remaining rows."},"ExchangeRateListItem":{"type":"object","properties":{"baseCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"quoteCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"rate":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Units of quote currency per one unit of base currency. Null until the feed publishes a positive observation."},"effectiveAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"UTC time when this observation became the latest published rate. Null until a value exists."},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"UTC time when the indexed feed record last changed."},"feedAddress":{"anyOf":[{"$ref":"#/components/schemas/EvmAddress"},{"type":"null"}],"description":"On-chain feed that produced this pair. Null when no feed is registered yet."}},"required":["baseCurrency","quoteCurrency","rate","effectiveAt","updatedAt","feedAddress"],"additionalProperties":false,"description":"One configured currency pair. `rate` and `effectiveAt` are null until the feed publishes a positive observation. `feedAddress` is the on-chain feed that produced the value."},"ExchangeRatesReadOutput":{"anyOf":[{"$ref":"#/components/schemas/ExchangeRate"},{"type":"null"}],"description":"The latest observation for the requested pair, or null when the pair has no positive observation yet. Repeat the call after a feed publishes a value."},"ExchangeRate":{"type":"object","properties":{"baseCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"quoteCurrency":{"$ref":"#/components/schemas/FiatCurrency"},"rate":{"type":"number","exclusiveMinimum":0,"description":"Units of quote currency per one unit of base currency. Always greater than zero."},"effectiveAt":{"$ref":"#/components/schemas/TimestampEncoded"}},"required":["baseCurrency","quoteCurrency","rate","effectiveAt"],"additionalProperties":false,"description":"Latest positive observation for one ISO 4217 currency pair. `rate` is quote per one base unit. `effectiveAt` is the UTC time of that observation."},"TimeInterval":{"type":"string","enum":["HOURLY","DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"Named coupon interval.","examples":["MONTHLY"]},"UserAssetsResponse":{"type":"array","items":{"$ref":"#/components/schemas/TokenBalance"},"description":"Token balances held by the requested wallet. Amounts are scaled decimal strings. `valueInBaseCurrency` is null when no price path exists.","examples":[[{"id":"0x8ba1f109551bd432803012645ac136ddd64dba72","value":"125000","frozen":"0","available":"125000","valueInBaseCurrency":"125000.00","priceInBaseCurrencyReliable":true,"token":{"id":"0x8ba1f109551bD432803012645Ac136ddd64DBA72","name":"Northwind Coffee Bond","symbol":"NCB","decimals":18,"totalSupply":"50000000","yield":null}}]]},"TokenBalance":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EthereumHexEncoded"},"value":{"$ref":"#/components/schemas/BigDecimal"},"frozen":{"$ref":"#/components/schemas/BigDecimal"},"available":{"$ref":"#/components/schemas/BigDecimal"},"valueInBaseCurrency":{"anyOf":[{"$ref":"#/components/schemas/BigDecimal"},{"type":"null"}],"description":"Balance multiplied by the token's resolved price, expressed in the organization's base currency. Null when no FX/price path is available for the token."},"priceInBaseCurrencyReliable":{"type":"boolean","description":"Whether the FX chain used to populate the token's resolved base-currency price was fully reliable (all hops via active feeds). False when no price is available or when any hop fell back to a stale/backfilled rate.","examples":[true,false]},"token":{"$ref":"#/components/schemas/TokenAsset"}},"required":["id","value","frozen","available","valueInBaseCurrency","priceInBaseCurrencyReliable","token"],"additionalProperties":false},"TokenAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"The token name","examples":["Bond Token","Equity Share"]},"symbol":{"$ref":"#/components/schemas/AssetSymbol"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"totalSupply":{"$ref":"#/components/schemas/BigDecimal"},"totalSupplyExact":{"anyOf":[{"$ref":"#/components/schemas/ApiBigIntEncoded"},{"type":"null"}]},"bond":{"anyOf":[{"type":"object","properties":{"isMatured":{"type":"boolean","description":"Whether the bond is matured","examples":[true,false]}},"required":["isMatured"],"additionalProperties":false,"description":"Bond details when the token is a bond. Absent for other asset classes.","examples":[{"isMatured":false}]},{"type":"null"}]},"yield":{"anyOf":[{"type":"object","properties":{"schedule":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"denominationAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"symbol":{"$ref":"#/components/schemas/AssetSymbol_1"},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"}},"required":["id","symbol","decimals"],"additionalProperties":false,"description":"Asset the coupon is paid in.","examples":[{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","symbol":"USDC","decimals":6}]}},"required":["id","denominationAsset"],"additionalProperties":false,"description":"Yield schedule attached to the token, when one exists."},{"type":"null"}]}},"required":["schedule"],"additionalProperties":false,"description":"Yield details when the token has a schedule. Null otherwise."},{"type":"null"}]}},"required":["id","name","symbol","decimals","totalSupply","yield"],"additionalProperties":false,"description":"Token that this balance belongs to."},"AssetSymbol_1":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"The denomination asset symbol","examples":["USDC","USDT","DAI"]},"AssetSymbol":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[A-Z0-9]+$","description":"The token symbol","examples":["BOND","EQT","USDC"]},"ExternalTokenRegisterOutput":{"type":"object","properties":{"txHash":{"$ref":"#/components/schemas/EthereumHashEncoded"},"tokenAddress":{"$ref":"#/components/schemas/EvmAddress"}},"required":["txHash","tokenAddress"],"additionalProperties":false,"description":"The registration transaction hash and the token that was submitted.","examples":[{"txHash":"0x2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae","tokenAddress":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}]},"ExternalTokenRegisterInput":{"type":"object","properties":{"tokenAddress":{"$ref":"#/components/schemas/EvmAddress"},"tokenType":{"$ref":"#/components/schemas/AssetClassSlug"},"walletVerification":{"$ref":"#/components/schemas/OptionalUserVerification"}},"required":["tokenAddress","tokenType"],"additionalProperties":false,"description":"External token to register. `tokenType` is the organization's asset-class slug. `walletVerification` is required when the executor uses a smart wallet.","examples":[{"tokenAddress":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","tokenType":"stablecoin"}]},"OptionalUserVerification":{"anyOf":[{"$ref":"#/components/schemas/UserVerification"},{"type":"null"}]},"UserVerification":{"type":"object","properties":{"secretVerificationCode":{"type":"string","minLength":1},"verificationType":{"anyOf":[{"type":"string","enum":["OTP","PINCODE","SECRET_CODES","OIDC_MFA"]},{"type":"null"}]}},"required":["secretVerificationCode"],"additionalProperties":false},"AssetClassSlug":{"type":"string","minLength":1,"description":"Organization asset-class slug assigned to this token.","examples":["stablecoin"]},"ExternalTokenListResponse":{"type":"object","properties":{"tokens":{"$ref":"#/components/schemas/ExternalTokenList"},"totalCount":{"type":"integer"}},"required":["tokens","totalCount"],"additionalProperties":false,"description":"Every external token in the organization's registry. `totalCount` is the full registry size, not a page size.","examples":[{"tokens":[{"id":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","name":"USD Coin","symbol":"USDC","decimals":6,"totalSupply":"25000000","type":"stablecoin","externalRegisteredAt":"2026-03-04T09:12:41.000Z","externalRegisteredBy":{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F"},"externalDetectedInterfaces":["ERC20"],"implementsERC3643":false,"implementsSMART":false}],"totalCount":1}]},"ExternalTokenList":{"type":"array","items":{"$ref":"#/components/schemas/ExternalToken"}},"ExternalToken":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"name":{"type":"string","description":"The name of the token","examples":["USD Coin","Wrapped Ether"]},"symbol":{"type":"string","description":"The symbol of the token","examples":["USDC","WETH"]},"decimals":{"$ref":"#/components/schemas/DecimalsEncoded"},"totalSupply":{"anyOf":[{"$ref":"#/components/schemas/BigDecimal"},{"type":"null"}],"description":"The total supply of the token (scaled by decimals)"},"totalSupplyExact":{"anyOf":[{"$ref":"#/components/schemas/ApiBigIntEncoded"},{"type":"null"}]},"type":{"type":"string","description":"The type assigned to the token","examples":["stablecoin","bond","equity"]},"pausable":{"anyOf":[{"type":"object","properties":{"paused":{"type":"boolean","description":"Whether the token is paused","examples":[true,false]}},"required":["paused"],"additionalProperties":false},{"type":"null"}]},"externalRegisteredAt":{"anyOf":[{"$ref":"#/components/schemas/TimestampEncoded"},{"type":"null"}],"description":"When the token was registered as external"},"externalRegisteredBy":{"anyOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"}},"required":["id"],"additionalProperties":false,"description":"Account that registered the token","examples":[{"id":"0x2546BcD3c84621e976D8185a91A922aE77ECEc30"}]},{"type":"null"}]},"externalDetectedInterfaces":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Detected interfaces on the token","examples":[["ERC20","Pausable"]]},"implementsERC3643":{"type":"boolean","description":"Whether the token implements ERC3643","examples":[true,false]},"implementsSMART":{"type":"boolean","description":"Whether the token implements SMART","examples":[true,false]}},"required":["id","name","symbol","decimals","totalSupply","type","externalRegisteredAt","externalRegisteredBy","externalDetectedInterfaces","implementsERC3643","implementsSMART"],"additionalProperties":false},"AccountSearchResult":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EvmAddress"},"isContract":{"anyOf":[{"type":"boolean","description":"Whether the account is a contract","examples":[true,false]},{"type":"null"}]},"contractName":{"anyOf":[{"type":"string","description":"The name of the contract","examples":["MyToken","BondFactory"]},{"type":"null"}]},"displayName":{"anyOf":[{"type":"string","description":"The display name of the account","examples":["Alice","Treasury"]},{"type":"null"}]}},"required":["id"],"additionalProperties":false,"description":"One account that matched the address prefix. `isContract` is false when the indexer has not marked the address as a contract.","examples":[{"id":"0x71C7656EC7ab88b098defB751B7401B5f6d8976F","isContract":false,"displayName":"Northwind Coffee Treasury"}]},"User":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"email":{"type":"string"},"emailVerified":{"type":"boolean","default":false,"readOnly":true},"image":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"role":{"type":"string","default":"member","readOnly":true},"banned":{"type":"boolean","default":false,"readOnly":true},"banReason":{"type":"string","readOnly":true},"banExpires":{"type":"string","format":"date-time","readOnly":true},"twoFactorEnabled":{"type":"boolean","default":false,"readOnly":true},"lastLoginAt":{"type":"string","format":"date-time","readOnly":true},"walletPincodeEnabled":{"type":"boolean","default":false,"readOnly":true},"walletPincodeVerificationId":{"type":"string","readOnly":true},"walletTwoFactorEnabled":{"type":"boolean","default":false,"readOnly":true},"walletTwoFactorVerificationId":{"type":"string","readOnly":true},"walletSecretCodeVerificationId":{"type":"string","readOnly":true},"walletSecretCodesConfirmed":{"type":"boolean","default":false,"readOnly":true},"lastActiveOrganizationId":{"type":"string","readOnly":true}},"required":["id","name","email","emailVerified","createdAt","updatedAt","role"],"example":{"id":"user_northwind_ops","name":"Northwind Treasury","email":"treasury@northwind.example","emailVerified":true,"image":"https://static.northwind.example/avatars/treasury.png","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","role":"member","banned":false,"twoFactorEnabled":true,"lastLoginAt":"2026-03-04T15:40:00.000Z","walletPincodeEnabled":true,"walletPincodeVerificationId":"ver_pincode_northwind","walletTwoFactorEnabled":true,"walletTwoFactorVerificationId":"ver_totp_northwind","walletSecretCodeVerificationId":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","walletSecretCodesConfirmed":true,"lastActiveOrganizationId":"org_northwind_coffee"}},"Session":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"expiresAt":{"type":"string","format":"date-time"},"token":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"ipAddress":{"type":"string"},"userAgent":{"type":"string"},"userId":{"type":"string"},"impersonatedBy":{"type":"string","readOnly":true},"activeOrganizationId":{"type":"string","readOnly":true}},"required":["id","expiresAt","token","createdAt","updatedAt","userId"],"example":{"id":"sess_northwind_console","expiresAt":"2026-03-11T15:42:18.000Z","token":"sess_example_not_a_live_token","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","ipAddress":"203.0.113.10","userAgent":"Mozilla/5.0 NorthwindConsole","userId":"user_northwind_ops","activeOrganizationId":"org_northwind_coffee"}},"Account":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"accountId":{"type":"string"},"providerId":{"type":"string"},"userId":{"type":"string"},"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"idToken":{"type":"string"},"accessTokenExpiresAt":{"type":"string","format":"date-time"},"refreshTokenExpiresAt":{"type":"string","format":"date-time"},"scope":{"type":"string"},"password":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","accountId","providerId","userId","createdAt","updatedAt"],"example":{"id":"acct_northwind_oidc","accountId":"sub_northwind_ops","providerId":"oidc-northwind","userId":"user_northwind_ops","accessToken":"oauth_example_access_not_live","refreshToken":"oauth_example_refresh_not_live","idToken":"oauth_example_id_not_live","accessTokenExpiresAt":"2026-03-11T15:42:18.000Z","refreshTokenExpiresAt":"2026-03-11T15:42:18.000Z","scope":"openid email profile","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z"}},"Verification":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"identifier":{"type":"string"},"value":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","identifier","value","expiresAt","createdAt","updatedAt"],"example":{"id":"018f7b0a-7c3e-7890-a1b2-c3d4e5f60789","identifier":"treasury@northwind.example","value":"verify_example_not_live","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z"}},"Jwks":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"publicKey":{"type":"string"},"privateKey":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"alg":{"type":"string"},"crv":{"type":"string"}},"required":["id","publicKey","privateKey","createdAt"]},"Apikey":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"configId":{"type":"string","default":"default","readOnly":true},"name":{"type":"string","readOnly":true},"start":{"type":"string","readOnly":true},"referenceId":{"type":"string","readOnly":true},"prefix":{"type":"string","readOnly":true},"key":{"type":"string","readOnly":true},"refillInterval":{"type":"number","readOnly":true},"refillAmount":{"type":"number","readOnly":true},"lastRefillAt":{"type":"string","format":"date-time","readOnly":true},"enabled":{"type":"boolean","default":true,"readOnly":true},"rateLimitEnabled":{"type":"boolean","default":true,"readOnly":true},"rateLimitTimeWindow":{"type":"number","default":60000,"readOnly":true},"rateLimitMax":{"type":"number","default":10000,"readOnly":true},"requestCount":{"type":"number","default":0,"readOnly":true},"remaining":{"type":"number","readOnly":true},"lastRequest":{"type":"string","format":"date-time","readOnly":true},"expiresAt":{"type":"string","format":"date-time","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"permissions":{"type":"string","readOnly":true},"metadata":{"type":"string"}},"required":["id","configId","referenceId","key","createdAt","updatedAt"],"example":{"id":"apikey_northwind_treasury","configId":"default","name":"Treasury automation","start":"sm_dalp_exampl","referenceId":"user_northwind_ops","prefix":"sm_dalp_","key":"sm_dalp_example_not_a_live_key","refillInterval":3600000,"refillAmount":1000,"lastRefillAt":"2026-03-04T15:42:18.000Z","enabled":true,"rateLimitEnabled":true,"rateLimitTimeWindow":60000,"rateLimitMax":10000,"requestCount":12,"remaining":988,"lastRequest":"2026-03-04T15:42:18.000Z","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z","updatedAt":"2026-03-04T15:42:18.000Z","permissions":"{\"organization\":[\"read\"]}","metadata":"{\"scope\":\"read-write\"}"}},"Passkey":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"publicKey":{"type":"string"},"userId":{"type":"string"},"credentialID":{"type":"string"},"counter":{"type":"number"},"deviceType":{"type":"string"},"backedUp":{"type":"boolean"},"transports":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"aaguid":{"type":"string"}},"required":["id","publicKey","userId","credentialID","counter","deviceType","backedUp"],"example":{"id":"passkey_northwind_laptop","name":"Northwind laptop","publicKey":"pQECAyYgASFYIExamplePublicKeyNotLive","userId":"user_northwind_ops","credentialID":"cred_example_northwind_laptop","counter":7,"deviceType":"platform","backedUp":true,"transports":"internal,hybrid","createdAt":"2026-02-11T09:14:07.000Z","aaguid":"a1b2c3d4-e5f6-4789-a012-3456789abcde"}},"TwoFactor":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"secret":{"type":"string"},"backupCodes":{"type":"string"},"userId":{"type":"string"},"verified":{"type":"boolean","default":true,"readOnly":true},"failedVerificationCount":{"type":"number","default":0,"readOnly":true},"lockedUntil":{"type":"string","format":"date-time","readOnly":true}},"required":["id"],"example":{"id":"twofactor_northwind_login","secret":"totp_example_secret_not_live","backupCodes":"hashed-backup-codes-example","userId":"user_northwind_ops","verified":true,"failedVerificationCount":0}},"DeviceCode":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"deviceCode":{"type":"string"},"userCode":{"type":"string"},"userId":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"status":{"type":"string"},"lastPolledAt":{"type":"string","format":"date-time"},"pollingInterval":{"type":"number"},"clientId":{"type":"string"},"scope":{"type":"string"}},"required":["id","deviceCode","userCode","expiresAt","status"],"example":{"id":"devauth_northwind_cli","deviceCode":"device_example_code_not_live","userCode":"WDJB-MOOO","userId":"user_northwind_ops","expiresAt":"2026-03-11T15:42:18.000Z","status":"pending","lastPolledAt":"2026-03-04T15:42:18.000Z","pollingInterval":5,"clientId":"northwind-cli","scope":"openid"}},"Organization":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"slug":{"type":"string"},"logo":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"metadata":{"type":"string"},"onboardingCompletedAt":{"type":"string","format":"date-time","readOnly":true},"archivedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","name","slug","createdAt"],"example":{"id":"org_northwind_coffee","name":"Northwind Coffee","slug":"northwind-coffee","logo":"https://static.northwind.example/logo.png","createdAt":"2026-02-11T09:14:07.000Z","metadata":"{\"region\":\"eu\"}","onboardingCompletedAt":"2026-02-12T10:00:00.000Z"}},"Member":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"organizationId":{"type":"string"},"userId":{"type":"string"},"role":{"type":"string","default":"member"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","userId","role","createdAt"],"example":{"id":"member_northwind_ops","organizationId":"org_northwind_coffee","userId":"user_northwind_ops","role":"member","createdAt":"2026-02-11T09:14:07.000Z"}},"Invitation":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"organizationId":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"status":{"type":"string","default":"pending"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"inviterId":{"type":"string"},"onChainRoles":{"type":"string","readOnly":true},"onChainRolesAuthorizedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","organizationId","email","status","expiresAt","createdAt","inviterId"],"example":{"id":"invite_northwind_analyst","organizationId":"org_northwind_coffee","email":"analyst@northwind.example","role":"member","status":"pending","expiresAt":"2026-03-11T15:42:18.000Z","createdAt":"2026-02-11T09:14:07.000Z","inviterId":"user_northwind_admin","onChainRoles":"[\"assetManager\"]","onChainRolesAuthorizedAt":"2026-03-04T15:42:18.000Z"}}},"securitySchemes":{"apiKeyCookie":{"type":"apiKey","in":"cookie","name":"apiKeyCookie","description":"API Key authentication via cookie"},"bearerAuth":{"type":"http","scheme":"bearer","description":"Bearer token authentication"},"apiKey":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"API key"},"sessionCookie":{"type":"apiKey","in":"cookie","name":"__Secure-better-auth.session_token","description":"Session cookie that sign-in sets. Over plain HTTP the name has no `__Secure-` prefix. A local deployment uses `better-auth-<host-port>` in place of `better-auth`."},"twoFactorCookie":{"type":"apiKey","in":"cookie","name":"__Secure-better-auth.two_factor","description":"Pending two-factor cookie that a password sign-in sets when the account has a second factor. Over plain HTTP the name has no `__Secure-` prefix. A local deployment uses `better-auth-<host-port>` in place of `better-auth`."}},"parameters":{"idempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-generated retry key for one mutation. Reuse it only for the same method, path, and body. If you omit it, the platform generates a UUIDv7 key you cannot replay after a lost response.","schema":{"type":"string"}}},"headers":{"Location":{"description":"URL for polling an accepted mutation (RFC 7231 §7.1.2). Present on HTTP 202. Do not resubmit the original request while this URL is available.","schema":{"type":"string","format":"uri-reference"}},"X-Request-Id":{"description":"Correlation id for this request. Include it with the error payload `requestId` when you contact support.","schema":{"type":"string"}}}},"security":[{"apiKey":[]}],"tags":[{"name":"API keys","description":"Create, inspect, rotate, and revoke API keys for server-to-server access. A key inherits its creator's permissions and has an explicit read or read-write scope."},{"name":"Sessions and sign-in","description":"Sign in, sign out, inspect the current session, and manage the signed-in user's account. Use this surface for interactive clients that authenticate with a session cookie."},{"name":"Organisations and members","description":"Select the active organisation and manage its membership and invitations. The active organisation supplies the tenant context for later API calls."},{"name":"Account security","description":"Configure passkeys, multi-factor authentication, wallet PIN protection, recovery codes, and active sessions for the signed-in account."},{"name":"OAuth and device authorization","description":"Authenticate through configured OAuth providers or the device authorization flow. These routes establish identity; they do not perform asset operations."},{"name":"Authentication administration","description":"Restricted user and session administration for platform operators. These routes can change another user's access and require platform administrator permission."},{"name":"Accounts and portfolio","description":"Read accounts, native balances, token holdings, historical balances, and portfolio performance for the selected participant and chain."},{"name":"Actions","description":"List and stream asynchronous actions created by platform workflows. Poll or stream an existing action instead of resubmitting the instruction that created it."},{"name":"Transactions","description":"Read blockchain transactions and durable transaction requests, follow their status, and use restricted recovery operations when a queued request needs intervention."},{"name":"Search","description":"Search tokens, users, contacts, and platform records visible to the caller. Search reads indexed state and does not submit a transaction."},{"name":"Activity and statistics","description":"Read account activity and aggregate system statistics used by dashboards, reporting, and operational analysis."},{"name":"Tokens","description":"List and inspect tokenized instruments, holders, allowances, events, and attached capabilities. Reads use indexed state unless an operation says it evaluates the live chain."},{"name":"Token creation","description":"Issue a new tokenized instrument and follow its deployment. Choose the asset design and factory first, then poll the returned status URL when creation is asynchronous."},{"name":"External tokens","description":"Register and inspect token contracts that were deployed outside the platform but participate in platform workflows."},{"name":"Token transfers and supply","description":"Transfer, mint, burn, approve, and pre-authorize token movement. Mutations submit or queue chain work and must be retried only with the same idempotency key."},{"name":"Token controls","description":"Manage pause state, freezes, supply caps, token roles, and other issuer controls that restrict how one token can operate."},{"name":"Token documents","description":"Upload, confirm, list, download, and remove documents attached to a token. Upload URLs store content; confirmation attaches the stored file to the asset record."},{"name":"Token statistics","description":"Read indexed supply, holder, volume, collateral, balance-history, and distribution statistics for one token."},{"name":"Token lifecycle","description":"Run maturity, redemption, recovery, collateral, and token-scoped claim operations across the life of an issued instrument."},{"name":"XvP settlements","description":"Create and operate exchange-versus-payment settlements, including approvals, secret handling, execution, cancellation, and expiry recovery."},{"name":"Yield and distributions","description":"Configure and operate fixed yield, treasury yield, interest, and dividend distributions, including funding, claims, and issuer recovery."},{"name":"Users","description":"Read and administer organisation users, wallets, security state, onboarding state, and user-facing events."},{"name":"Contacts","description":"Manage the signed-in user's address book. Each contact pairs a consumer-chosen name with one wallet."},{"name":"KYC","description":"Manage KYC profiles, review versions, supporting documents, decisions, and action requests for users in the active organisation."},{"name":"Identities and claims","description":"Read and manage on-chain identities, claim topics, trusted issuers, signed claims, and the registry chain that resolves them."},{"name":"Compliance rules","description":"Define and apply compliance templates, modules, expressions, and token-level rules that decide whether a transfer is allowed."},{"name":"Identity recovery","description":"Preview and execute recovery when a user loses a wallet, then follow the recovery until identity and holdings have moved or the process stops."},{"name":"Price feeds","description":"Read and maintain on-chain price feeds, directory registrations, observations, issuer nonces, adapters, and staleness state."},{"name":"Exchange rates","description":"Read current and historical currency exchange rates derived from configured market-data feeds."},{"name":"Systems and factories","description":"Inspect deployed systems, directories, contracts, token factories, and addon factories, and create the factories required for asset issuance."},{"name":"Roles and permissions","description":"Read, grant, and revoke system and participant roles through the active system's access manager."},{"name":"Platform settings","description":"Read and manage organisation settings, themes, public client configuration, metadata, and other platform behavior exposed to integrators."},{"name":"Platform administration","description":"Restricted platform-wide administration for organisations, users, networks, RPC pools, API keys, health, and recovery controls."}],"x-tagGroups":[{"name":"API access","description":"Start here to create API credentials, establish a session, select an organisation, and secure the account that calls the Platform API.","tags":["API keys","Sessions and sign-in","Organisations and members","Account security","OAuth and device authorization","Authentication administration"]},{"name":"Portfolio and activity","description":"Read holdings and portfolio performance, follow asynchronous actions and transactions, inspect activity, and search records visible to the caller.","tags":["Accounts and portfolio","Actions","Transactions","Search","Activity and statistics"]},{"name":"Assets","description":"Design, issue, inspect, and operate tokenized instruments. Read the token first, then use the focused task groups for supply, controls, documents, lifecycle, and optional features.","tags":["Tokens","Token creation","External tokens","Token transfers and supply","Token controls","Token documents","Token statistics","Token lifecycle"]},{"name":"Asset lifecycle","description":"Run post-issuance workflows such as primary offerings, exchange-versus-payment settlement, governance, distributions, and airdrops.","tags":["XvP settlements","Yield and distributions"]},{"name":"Participants and compliance","description":"Manage the people, wallets, identities, claims, and compliance policy that determine who may hold or transfer an asset.","tags":["Users","Contacts","KYC","Identities and claims","Compliance rules","Identity recovery"]},{"name":"Market data","description":"Read and maintain the feeds and exchange rates used for valuation, pricing, and policy decisions.","tags":["Price feeds","Exchange rates"]},{"name":"Platform operations","description":"Configure organisations, systems, integrations, signing infrastructure, monitoring, and restricted operator controls.","tags":["Systems and factories","Roles and permissions","Platform settings","Platform administration"]}],"x-dalp-generated":{"sha256":"30d34051fdf6"}}