Create Approval Decision
Approves or rejects an approval request.
- HTTP request
- POST/v2/policy-approvals/{approvalId}/decisions
- Authentication
-
Authentication Type Supported Organization User (CustomerEmployee) Yes Delegated User (EndUser) No Service Account No - Required permissions
- Policies:Approvals:Approve (always required)
- Authorization requirements
-
Header Type Required Description Authorization string Yes Bearer token used to authenticate the request. See Authentication flows for details. X-DFNS-USERACTION string Yes User Action Signature used to sign change‑inducing requests. See User Action Signing flows for details. - Path parameters
-
Parameter Type Required Description approvalId string Yes Unique identifier of the approval request. Minimum length is 1. - Request body
-
Field Type Required Description value enum string Yes Decision value. Allowed values: Approved,Denied.reason string No Optional reason for the decision. Maximum length is 1000 characters. curl --request POST \ --url https://api.digitalassets.ibm.com/v2/policy-approvals/{approvalId}/decisions \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'X-DFNS-USERACTION: <api-key>' \ --data ' { "value": "Approved", "reason": "<string>" } ' - Response
- 200: Success
Example response:
{ "id": "<string>", "initiatorId": "<string>", "activity": { "kind": "Wallets:Sign", "transferRequest": { "id": "xfr-20g4k-nsdpo-mg6arrifgvid4orn", "walletId": "wa-5pfuu-9euek-h0odgb6snva8ph3k", "network": "Algorand", "requester": { "userId": "us-6b58p-r53sr-rlrd3l5cj3uc4ome", "tokenId": "to-202a0-cdo33-o65mbt6q758lvvnt" }, "requestBody": { "kind": "Native", "to": "<string>", "amount": "<string>", "memo": "<string>", "priority": "Slow", "createDestinationAccount": true, "offer": true, "expiresAt": "2023-11-07T05:31:56Z", "externalId": "<string>", "travelRule": { "kind": "Notabene", "originator": {}, "beneficiary": {}, "beneficiaryVASPdid": "<string>", "beneficiaryProof": {} }, "feeSponsorId": "fs-5vqdl-gliqk-b4rfukqauov1sp7j" }, "metadata": { "asset": { "symbol": "<string>", "decimals": 123, "verified": true, "quotes": { "EUR": 123, "USD": 123 } } }, "status": "Pending", "dateRequested": "2023-04-14T20:41:28.715Z", "reason": "<string>", "txHash": "<string>", "fee": "<string>", "datePolicyResolved": "2023-04-14T20:41:28.715Z", "dateBroadcasted": "2023-04-14T20:41:28.715Z", "dateConfirmed": "2023-04-14T20:41:28.715Z", "approvalId": "ap-2a9in-tt2a1-983lho480p35ejd0", "externalId": "<string>", "feeSponsorId": "fs-5vqdl-gliqk-b4rfukqauov1sp7j" }, "transactionRequest": { "id": "tx-583hu-sp2p7-slvb9nqpa3hd8bus", "walletId": "wa-5pfuu-9euek-h0odgb6snva8ph3k", "network": "Algorand", "requester": { "userId": "us-6b58p-r53sr-rlrd3l5cj3uc4ome", "tokenId": "to-202a0-cdo33-o65mbt6q758lvvnt" }, "requestBody": { "kind": "Transaction", "transaction": "<string>", "externalId": "<string>" }, "status": "Pending", "dateRequested": "2023-04-14T20:41:28.715Z", "reason": "<string>", "txHash": "<string>", "fee": "<string>", "approvalId": "ap-2a9in-tt2a1-983lho480p35ejd0", "datePolicyResolved": "2023-04-14T20:41:28.715Z", "dateBroadcasted": "2023-04-14T20:41:28.715Z", "dateConfirmed": "2023-04-14T20:41:28.715Z", "externalId": "<string>" }, "signatureRequest": { "id": "sig-4sfvl-f4iha-umighfi3hk4t54dr", "keyId": "key-01snl-t56gb-j8tsok0vn802p80i", "requester": { "userId": "us-6b58p-r53sr-rlrd3l5cj3uc4ome", "tokenId": "to-202a0-cdo33-o65mbt6q758lvvnt" }, "requestBody": { "kind": "Hash", "hash": "<string>", "taprootMerkleRoot": "<string>", "network": "Algorand", "blockchainKind": "Algorand", "externalId": "<string>" }, "status": "Pending", "dateRequested": "2023-04-14T20:41:28.715Z", "reason": "<string>", "signature": { "r": "<string>", "s": "<string>", "recid": 123, "encoded": "<string>" }, "signatures": [ { "r": "<string>", "s": "<string>", "recid": 123, "encoded": "<string>" } ], "signedData": "<string>", "network": "Algorand", "txHash": "<string>", "fee": "<string>", "approvalId": "ap-2a9in-tt2a1-983lho480p35ejd0", "datePolicyResolved": "2023-04-14T20:41:28.715Z", "dateSigned": "2023-04-14T20:41:28.715Z", "dateConfirmed": "2023-04-14T20:41:28.715Z", "externalId": "<string>" }, "swapRequest": { "id": "swap-6a3ku-bn8d7-8u5rs1oukojms7k8", "quoteId": "swapQuote-3hgv4-q8tbf-8v2ajmrbmg6m4i9t", "reference": null, "walletId": "wa-3l3cj-l8mq7-8q78f9nopq7f1qjv", "targetWalletId": "wa-3l3cj-l8mq7-8q78f9nopq7f1qjv", "status": "PendingPolicyApproval", "provider": "UniswapClassic", "quotedSourceAsset": { "kind": "Native", "amount": "10000000000", "metadata": { "network": "EthereumSepolia", "name": "Ethereum", "symbol": "SepoliaETH", "decimals": 18, "tid": "native:eth" } }, "quotedTargetAsset": { "kind": "Erc20", "contract": "0xda0be7efd234295395d4204d0df4358339b57b27", "amount": "6467571553831928182", "metadata": { "network": "EthereumSepolia", "name": "Test", "symbol": "Test", "decimals": 18, "tid": "erc20:0xda0be7efd234295395d4204d0df4358339b57b27" } }, "slippageBps": 100, "dateCreated": "2025-09-11T10:57:55.758Z", "requestBody": { "quoteId": "swapQuote-3hgv4-q8tbf-8v2ajmrbmg6m4i9t", "walletId": "wa-3l3cj-l8mq7-8q78f9nopq7f1qjv", "targetWalletId": "wa-3l3cj-l8mq7-8q78f9nopq7f1qjv", "provider": "UniswapClassic", "slippageBps": 100, "sourceAsset": { "kind": "Native", "amount": "10000000000" }, "targetAsset": { "kind": "Erc20", "contract": "0xda0be7efd234295395d4204d0df4358339b57b27", "amount": "653003161" } }, "requester": { "userId": "us-48r5q-eshfg-9pmr2lo6bmpr4i4i", "tokenId": "to-4etah-smoal-9n3rmhul4dpaueg5" } } }, "status": "Pending", "dateUpdated": "<string>", "policyEvaluations": [ { "policyId": "<string>", "triggered": true, "reason": "<string>", "context": "<unknown>" } ], "decisions": [ { "userId": "<string>", "date": "<string>", "reason": "<string>", "value": "Approved" } ], "expirationDate": "<string>", "dateCreated": "<string>", "dateResolved": "<string>" }