Sample Approval Requests

This page lists a number of requests. These are requests created by a Virtual Signer and sent to a customer API for approval, rejection or abstention. This happens prior to the Virtual Signer processing or not the request, depending on the response.


Sample Vault Creation Request

In this request, the Virtual Signer asks for permission to create a new vault where the device will have a signing power of 2.

{
  "__typename" : "OperationCreateVault_v3",
  "id" : "riev6et9yf0fvk3339plqva4",
  "organisationId" : "ap3hsaaaa1koxjkbaaaaavso",
  "cDetails" : {
    "status" : "VOTING",
    "threshold" : 2
  },
  "voting" : {
    "approvedWeight" : 0,
    "progress" : "0",
    "threshold" : 1,
    "votes" : [ {
      "device" : {
        "id" : "vtrti0g0aaah0ptnb0aaasfr",
        "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
        "algorithm" : "CLIENTRECORD",
        "clientRecord" : "{\"pub_enc\":\"MCowB...pmNTA=\",\"pub_sign\":\"MCowBQ...+EU=\",\"rev\":\"1\",\"sig\":\"b54cI...KnzOCQ==\",\"updated\":\"0001-01-01T00:00:00Z\"}"
      },
      "vote" : "",
      "weight" : 2
    } ]
  },
  "details" : {
    "__typename" : "OperationCreateVaultDetails",
    "expiresAt" : "2025-11-08T15:10:50.652Z",
    "createdAt" : "2025-11-07T15:10:52.984Z",
    "updatedAt" : "2025-11-07T15:10:52.984Z",
    "status" : "VOTING",
    "errorCode" : "",
    "errorMessage" : "",
    "vault" : {
      "id" : "aa1d2mtae6moqyl6rjre9ca7",
      "curves" : [ ],
      "signers" : [ {
        "id" : "mllmy0kkylsurtre5fei2s3f",
        "device" : {
          "id" : "vtrti0g0aaah0ptnb0aaasfr",
          "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
          "name" : "VS_GF_DEV_Oct_15_Green_Book (sfr)",
          "theType" : "VirtualSigner",
          "clientRecord" : "{\"pub_enc\":\"MCowB...TA=\",\"pub_sign\":\"MCowB...EU=\",\"rev\":\"1\",\"sig\":\"b54cI...OCQ==\",\"updated\":\"0001-01-01T00:00:00Z\"}"
        },
        "signingParty" : {
          "id" : "",
          "threshold" : 0
        },
        "weight" : 2
      } ],
      "signingParty" : {
        "id" : "",
        "threshold" : 0
      },
      "details" : {
        "id" : "aa1d2mtae6moqyl6rjre9ca7",
        "name" : "VS New Vault Test Approvals ___",
        "signers" : [ {
          "id" : "mllmy0kkylsurtre5fei2s3f",
          "device" : {
            "id" : "vtrti0g0aaah0ptnb0aaasfr",
            "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
            "name" : "VS_GF_DEV_Oct_15_Green_Book (sfr)",
            "theType" : "VirtualSigner"
          },
          "signingParty" : {
            "id" : "",
            "threshold" : 0
          },
          "weight" : 2
        } ],
        "threshold" : 2,
        "reshareNonce" : -1,
        "curves" : [ ],
        "signingParty" : {
          "id" : "",
          "threshold" : 0
        }
      }
    },
    "threshold" : 2,
    "memo" : ""
  }
}

Sample Reshare Request

In this request, a Virtual Signer device currently has a signing power of 2 and asks permission to increase its signing power to 3.

{
  "__typename" : "OperationReshare_v3",
  "id" : "u8aaxdls4taaabjiqah0waja",
  "organisationId" : "ap3aaa3q41kaaakb80aaavso",
  "rDetails" : {
    "newThreshold" : 3,
    "previousThreshold" : 2
  },
  "voting" : {
    "approvedWeight" : 0,
    "progress" : "0",
    "threshold" : 1,
    "votes" : [ {
      "device" : {
        "id" : "vtrti0g0aaah0ptnb0aaasfr",
        "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
        "algorithm" : "CLIENTRECORD",
        "clientRecord" : "{\"pub_enc\":\"MCowBQ...mNTA=\",\"pub_sign\":\"MCowBQY...g+EU=\",\"rev\":\"1\",\"sig\":\"b54cI...OCQ==\",\"updated\":\"0001-01-01T00:00:00Z\"}"
      },
      "vote" : "",
      "weight" : 3
    } ]
  },
  "diff" : [ {
    "__typename" : "ReshareDiffThreshold",
    "originalThreshold" : 2,
    "newThreshold" : 3
  }, {
    "__typename" : "ReshareDiffDevicePowerChanged",
    "devicePowerChanged" : {
      "id" : "vtrti0g0dezh0ptnb0cibsfr",
      "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
      "clientRecord" : "{\"pub_enc\":\"MCowB...fpmNTA=\",\"pub_sign\":\"MCowBQYDK...+EU=\",\"rev\":\"1\",\"sig\":\"b54cIkU...OKnzOCQ==\",\"updated\":\"0001-01-01T00:00:00Z\"}"
    },
    "newWeight" : 3,
    "originalWeight" : 2
  } ],
  "details" : {
    "__typename" : "OperationReshareDetails",
    "expiresAt" : "2025-11-08T15:02:05.451Z",
    "createdAt" : "2025-11-07T15:02:05.455Z",
    "updatedAt" : "2025-11-07T15:02:05.455Z",
    "status" : "VOTING",
    "errorCode" : "",
    "errorMessage" : "",
    "vault" : {
      "id" : "tihnywsga4hua1zaev7bctoh",
      "curves" : [ {
        "algorithm" : "ECDSA",
        "curve" : "Secp256k1",
        "id" : "0f61922df203a7d25299e21123cfc9d6",
        "publicKey" : "04927a2222e62c123d3ce...72ffe0f8782921c1c62",
        "xpub" : "xpub661MyMwAq...Wx8q7Nn8yq49ACN"
      }, {
        "algorithm" : "EDDSA",
        "curve" : "Edwards",
        "id" : "4498b8d2e00bf4bb1a4b7686298e8045",
        "publicKey" : "d6445ba22b5ea...930d54e4",
        "xpub" : "xpub661MyMwAqRbcEu...kxG9mRSiepq1"
      } ],
      "signers" : [ {
        "id" : "902fcd43c21a17781608844d546f6645",
        "device" : {
          "id" : "vtrti0g0aaah0ptnb0aaasfr",
          "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
          "name" : "VS_GF_DEV_Oct_15_Green_Book (sfr)",
          "theType" : "VirtualSigner",
          "clientRecord" : "{\"pub_enc\":\"MCowBQYDK2...mNTA=\",\"pub_sign\":\"MCowBQYD...EU=\",\"rev\":\"1\",\"sig\":\"b54cIkUDv...nzOCQ==\",\"updated\":\"0001-01-01T00:00:00Z\"}"
        },
        "signingParty" : {
          "id" : "d765451dde8034796e7b5eb7d770ccf9",
          "threshold" : 2
        },
        "weight" : 2
      } ],
      "signingParty" : {
        "id" : "d765451dde8034796e7b5eb7d770ccf9",
        "threshold" : 2
      },
      "details" : {
        "id" : "tihnywsga4hua1zaev7bctoh",
        "name" : "VS MPC SDK VS Only sfr",
        "signers" : [ {
          "id" : "902fcd43c21a17781608844d546f6645",
          "device" : {
            "id" : "vtrti0g0aaah0ptnb0aaasfr",
            "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
            "name" : "VS_GF_DEV_Oct_15_Green_Book (sfr)",
            "theType" : "VirtualSigner"
          },
          "signingParty" : {
            "id" : "d765451dde8034796e7b5eb7d770ccf9",
            "threshold" : 2
          },
          "weight" : 2
        } ],
        "threshold" : 2,
        "reshareNonce" : 0,
        "curves" : [ {
          "algorithm" : "ECDSA",
          "curve" : "Secp256k1",
          "id" : "0f61922df203a7d25299e21123cfc9d6",
          "publicKey" : "04927a2222e62c123d3c...372ffe0f8782921c1c62",
          "xpub" : "xpub661MyMwAqRbcGG...8q7Nn8yq49ACN"
        }, {
          "algorithm" : "EDDSA",
          "curve" : "Edwards",
          "id" : "4498b8d2e00bf4bb1a4b7686298e8045",
          "publicKey" : "d6445ba22b5eaf52...930d54e4",
          "xpub" : "xpub661MyMwAqRbcEu...rxP6ukxG9mRSiepq1"
        } ],
        "signingParty" : {
          "id" : "d765451dde8034796e7b5eb7d770ccf9",
          "threshold" : 2
        }
      }
    },
    "memo" : ""
  }
}

Sample Transfer Out Request

In this example, a Virtual Signer asks for permission to transfer Sepolia ETH.

{
  "__typename" : "OperationTransferOut_v3",
  "id" : "xw8ufea4rdtaaaas1ck89htz",
  "organisationId" : "ap3hsq3q4aaaaaaaaast1vso",
  "details" : {
    "__typename" : "OperationTransferOutDetails",
    "status" : "VOTING",
    "expiresAt" : "2025-11-08T15:19:05.22Z",
    "vault" : {
      "id" : "bdnaaaazajx2aaaa45z5c9w8",
      "signingParty" : {
        "threshold" : 2
      },
      "signers" : [ {
        "id" : "34f4dae24c0c96b1e90dd35475d43807",
        "weight" : 2,
        "signingParty" : {
          "threshold" : 2
        },
        "device" : {
          "id" : "vtrti0g0dezh0ptnb0cibsfr",
          "uuid" : "6f9e1c22-aaaa-bdb0-bcaa-ed8c553845a7"
        }
      } ],
      "curves" : [ {
        "algorithm" : "ECDSA",
        "curve" : "Secp256k1",
        "xpub" : "xpub661MyMwAqRbcEZLGYZPFA...B3xUqN3LD2"
      }, {
        "algorithm" : "EDDSA",
        "curve" : "Edwards",
        "xpub" : "xpub661MyMwAqRbcGdHZF...WdEi3TtXBwfm5Rpa"
      } ],
      "details" : {
        "name" : "VS MPC SDK 920 VS Only sfr",
        "reshareNonce" : 0,
        "threshold" : 2
      }
    }
  },
  "voting" : {
    "votes" : [ {
      "device" : {
        "id" : "vtrti0g0dezh0ptnb0cibsfr",
        "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
        "clientRecord" : "{\"pub_enc\":\"MCo...mNTA=\",\"pub_sign\":\"MCowBQYD...g+EU=\",\"rev\":\"1\",\"sig\":\"b54cIkUDv...OCQ==\",\"updated\":\"0001-01-01T00:00:00Z\"}"
      },
      "vote" : "",
      "weight" : 2
    } ]
  },
  "signingData" : {
    "data" : "0a03aa36a71201...41f7e90ed",
    "batchData" : null,
    "derivationPath" : "",
    "chainId" : 0,
    "coseAlgorithm" : {
      "type" : "",
      "value" : ""
    },
    "contentType" : "",
    "executionType" : "ETH",
    "signature" : "",
    "batchSignature" : null
  },
  "tDetails" : {
    "asset" : {
      "id" : "ETH_SEPOLIA",
      "details" : {
        "executionType" : "ETH"
      }
    }
  }
}

Sample Data Sign Request

In this example, a Virtual Signer asks for permission to sign a request using EdDSA ("general signature" request). The request has data to be signed and content type, among other information.

{
  "__typename" : "OperationSign",
  "id" : "v91eh23sd61rqmzjiqdx5nww",
  "organisationId" : "ap3hsaaaa1koxjkbaaaa1vso",
  "details" : {
    "__typename" : "SignRequestDetails",
    "status" : "VOTING",
    "expiresAt" : "2025-11-10T05:20:13.683Z",
    "vault" : {
      "id" : "bdnxuotzajx21inm45z5c9w8",
      "signingParty" : {
        "threshold" : 2
      },
      "signers" : [ {
        "id" : "34f4dae24c0c96b1e90dd35475d43807",
        "weight" : 2,
        "signingParty" : {
          "threshold" : 2
        },
        "device" : {
          "id" : "vtrti0g0dezh0ptnb0cibsfr",
          "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7"
        }
      } ],
      "curves" : [ {
        "algorithm" : "ECDSA",
        "curve" : "Secp256k1",
        "xpub" : "xpub661MyMwAqRbcEZLGYZPFA3eCLRAUgWSRtHB637P6q3iPypiah4wK4E273Xioz6TXEJhnC7YuXRr6sW8dgCAPDmdYjkQvXZfdhB3xUqN3LD2"
      }, {
        "algorithm" : "EDDSA",
        "curve" : "Edwards",
        "xpub" : "xpub661MyMwAqRbcGdHZFsxLi9Q6BMm6CUxoSUjk6tY9EVT3UbLuxuXAt8ehJdbxCWHUiVMZEctVFNGW8ooCvZZZe6gygpRWdEi3TtXBwfm5Rpa"
      } ],
      "details" : {
        "name" : "VS MPC SDK GF 920 VS Only sfr",
        "reshareNonce" : 0,
        "threshold" : 2
      }
    }
  },
  "voting" : {
    "votes" : [ {
      "device" : {
        "id" : "vtrti0g0dezh0ptnb0cibsfr",
        "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
        "clientRecord" : "{\"pub_enc\":\"MCowBQYDK...NTA=\",\"pub_sign\":\"MCowBQ...EU=\",\"rev\":\"1\",\"sig\":\"b54...KnzOCQ==\",\"updated\":\"0001-01-01T00:00:00Z\"}"
      },
      "vote" : "",
      "weight" : 2
    } ]
  },
  "signingData" : {
    "data" : "Some data to be signed here",
    "batchData" : null,
    "derivationPath" : "",
    "chainId" : 0,
    "coseAlgorithm" : {
      "type" : "EDDSA",
      "value" : "-8"
    },
    "contentType" : "text/plain",
    "executionType" : "",
    "signature" : "",
    "batchSignature" : null
  }
}


Sample Batch Data Sign Request

In this example, a Virtual Signer asks for permission to sign an array of data strings using EdDSA ("batch sign" request).

{
  "__typename" : "OperationBatchSign",
  "id" : "gysrzv3cs63xm71vfe1jvpkw",
  "organisationId" : "ap3hsq3q4aaaajkb8aaaavso",
  "details" : {
    "__typename" : "OperationBatchSignDetails",
    "status" : "VOTING",
    "expiresAt" : "2025-11-10T02:04:13.683Z",
    "vault" : {
      "id" : "bdnxuotzajx21inm45z5c9w8",
      "signingParty" : {
        "threshold" : 2
      },
      "signers" : [ {
        "id" : "34f4dae24c0c96b1e90dd35475d43807",
        "weight" : 2,
        "signingParty" : {
          "threshold" : 2
        },
        "device" : {
          "id" : "vtrti0aaaazh0ptaaaaibsfr",
          "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7"
        }
      } ],
      "curves" : [ {
        "algorithm" : "ECDSA",
        "curve" : "Secp256k1",
        "xpub" : "xpub661MyMwAqRbcEZLGYZPFA3eCLRAUgWSRtHB637P6q3iPypiah4wK4E273Xioz6TXEJhnC7YuXRr6sW8dgCAPDmdYjkQvXZfdhB3xUqN3LD2"
      }, {
        "algorithm" : "EDDSA",
        "curve" : "Edwards",
        "xpub" : "xpub661MyMwAqRbcGdHZFsxLi9Q6BMm6CUxoSUjk6tY9EVT3UbLuxuXAt8ehJdbxCWHUiVMZEctVFNGW8ooCvZZZe6gygpRWdEi3TtXBwfm5Rpa"
      } ],
      "details" : {
        "name" : "VS MPC SDK VS Only sfr",
        "reshareNonce" : 0,
        "threshold" : 2
      }
    }
  },
  "voting" : {
    "votes" : [ {
      "device" : {
        "id" : "vtrti0g0dezh0ptnb0cibsfr",
        "uuid" : "6f9e1c22-4503-bdb0-bcaa-ed8c553845a7",
        "clientRecord" : "{\"pub_enc\":\"MCow...mNTA=\",\"pub_sign\":\"MCowBQ...EU=\",\"rev\":\"1\",\"sig\":\"b54cI...OCQ==\",\"updated\":\"0001-01-01T00:00:00Z\"}"
      },
      "vote" : "",
      "weight" : 2
    } ]
  },
  "signingData" : {
    "data" : "",
    "batchData" : [ "68656C6C6F", "676F6F64627965" ],
    "derivationPath" : "",
    "chainId" : 0,
    "coseAlgorithm" : {
      "type" : "EDDSA",
      "value" : "-8"
    },
    "contentType" : "application/octet-stream+hex",
    "executionType" : "",
    "signature" : "",
    "batchSignature" : null
  }
}

Other actions of io.vault can trigger requests of other types. A Virtual Signer device will also send out these requests for approval, when in API approval mode. These requests will have other values in __typename. Other types of sign operation requests include allowing an address, blocking an address, unblocking an address, disabling an address, burning tokens, minting tokens, generic contract call, and transferring tokens across io.vault vaults ( "out / in transfer", similar to a transfer out request). Consider logging the request body to obtain details for these types of sign operations.