Onboard - Preapproval for external party creation
Hi guys,
So I’m about to make the last step of my external party allocation, I hold my own private key, I’ve made a wallet, permission to custodian, and I can internal transfer between my parties. All good, the thing is that my last scenario is to receive funds from an external node.
I would like to stick with the preapproval contract that should be added to each newly added external party. I can make a preapproval contract using the endpoint from the wallet for my custodian
https://{domain}/api/validator/v0/wallet/transfer-preapproval
For the rest of my implementation, I’ve been using gRPC to allocate to an external party, grant user rights, and create a wallet. How is it possible for my external parties to get the contract either using gRPC (seems not possible) or using the wallet API?
I tried with this, resulting in a 409 error code.
curl -v -X POST https://{domain}/api/validator/v0/wallet/transfer-preapproval
-H “Authorization: Bearer {Token}”
-H “Content-Type: application/json”
-d ‘{“party_id”: “8996F10C30967E8403D7EE4998967D133638E4C116EC02CF8D3C84137C32D078::1220daa4365aafd65a37214e23c7eea4068e97e87f3f804c4a34388b3d3336dde76c”}’
So questions:
- How do we create a TransferPreapproval for an externally-allocated party? The wallet API (POST /v0/wallet/transfer-preapproval) only creates one for the JWT-authenticated user (our custodian). We need one per external party so senders can use TransferPreapproval_Send directly to each address.
- Does the External Signing API support AmuletRules_CreateTransferPreapproval? If so, what’s the endpoint/flow? We have ActAs rights on each external party and can sign with their key
Hey @Bacarden
A few things here for you:
- 409 means a preapproval already exists for that party as wallet API endpoint creates a
TransferPreapprovalfor whichever party is authenticated via the JWT AND it ignores theparty_idbody field. - also, Yes!! use the External Signing API, this is exactly the right flow since you have
actAsrights on each external party and hold their private keys, exerciseAmuletRules_CreateTransferPreapprovalvia the external signing flow. - Note: You can get the current
AmuletRulescontract ID from the Scan API which you will use to submit txns.
So I found the documentation
External Signing API - Validator APIs - Canton Network Docs
Was this page helpful? | Wallet, user management, external signing, and validator administration APIs
So the flow is that when I’m done with the onboarding, granting permissions and want to add the pre-approval contract, I need to use the external signing flow below:
- Create a proposal for a party - /v0/admin/external-party/setup-proposal
- Get and sign a tx hash - /v0/admin/external-party/setup-proposal/prepare-accept
- Submit the signed has - /v0/admin/external-party/setup-proposal/submit-accept
Kind of the same type of flow as the onboarding of external parties, and there is no way around these 3 steps for the pre-approval for external parties?
Yup, gotta follow the docs, apart from what’s given in docs, there is no other alternative I am aware of.
- Create a proposal for a party - /v0/admin/external-party/setup-proposal
- Get and sign a tx hash - /v0/admin/external-party/setup-proposal/prepare-accept
- Submit the signed has - /v0/admin/external-party/setup-proposal/submit-accept
Ok, thank you. I will give it a shot ![]()