Skip to main content
POST
/
platform
/
admin
/
proposals
/
{proposalId}
/
approve
Approve transaction proposal
curl --request POST \
  --url https://api.example.com/platform/admin/proposals/{proposalId}/approve \
  --header 'Content-Type: application/json' \
  --data '
{
  "proposalId": 10001,
  "walletTenantId": 2048
}
'
{
  "isSuccess": true,
  "isFailure": false,
  "error": null,
  "value": {
    "id": 42,
    "name": "Example"
  }
}

Description

Submits an approval for a transaction proposal on behalf of a custodian wallet. Once the approval threshold is reached, the proposal becomes eligible for execution. This is a critical step in the multi-approval workflow for blockchain transactions.

Input

Expects a JSON body containing:
  • proposalId (long, required) — The unique identifier of the proposal being approved.
  • walletTenantId (long, required) — The custodian wallet tenant ID providing the approval.

Output

Returns a containing:
  • success (bool) — Indicates if the approval was recorded successfully.
  • proposalId (long) — The approved proposal identifier.
  • currentApprovals (int) — Updated count of approvals received.
  • isReadyForExecution (bool) — True if approval threshold has been met.

Examples

Request
{
  "proposalId": 10001,
  "walletTenantId": 2048
}
Response (200 OK)
{
  "success": true,
  "proposalId": 10001,
  "currentApprovals": 3,
  "isReadyForExecution": true
}

Errors

  • 400 Bad Request: Request parameters are invalid or missing required fields.
  • 401 Unauthorized: Caller is not authenticated.
  • 403 Forbidden: Caller lacks permission to approve proposals or the wallet tenant is not a valid custodian.
  • 404 Not Found: Proposal or wallet tenant does not exist.
  • 409 Conflict: Proposal is already approved, executed, or cancelled and cannot accept new approvals.
  • 500 Internal Server Error: An unexpected error occurred.

Notes

Each custodian can only approve a proposal once. Duplicate approvals from the same wallet tenant will be rejected. After reaching the approval threshold, use the execute endpoint to submit the transaction to the blockchain.

Path Parameters

proposalId
integer<int64>
required

The unique identifier of the transaction proposal to approve.

Query Parameters

api-version
string | null

Body

application/json

The approval request containing the custodian wallet tenant identifier.

Request to approve a transaction proposal.

proposalId
integer<int64>

Identifier of the transaction proposal to be approved.

Example:

10001

walletTenantId
integer<int64>

Identifier of the wallet-tenant relationship performing the approval.

Example:

2048

Response

Proposal approved successfully.

Wrapper for API operation results containing success status, error information, and return value.

isSuccess
boolean

True if the operation completed successfully, false otherwise.

Example:

true

isFailure
boolean

True if the operation failed, false otherwise.

Example:

false

error
object

Error information returned when the operation fails.

Example:
{
"code": "ValidationError",
"message": "The request parameters failed validation.",
"info": [
"The Name field is required.",
"The Id field must be greater than 0."
]
}
value
object

The result value returned when the operation is successful.

Example:
{
"updatedRow": {
"walletTenantId": 2048,
"walletName": "Main Wallet",
"walletAddress": "0x1234567890abcdef1234567890abcdef12345678",
"activeCustodians": 2,
"approval": 2,
"status": "Approved",
"blockchainId": 137
}
}