Skip to main content
PUT
/
wallets
/
mpc
/
vaults
/
{vault_id}
/
key_share_holder_groups
/
{key_share_holder_group_id}
import cobo_waas2
from cobo_waas2.models.key_share_holder_group import KeyShareHolderGroup
from cobo_waas2.models.update_key_share_holder_group_by_id_request import (
    UpdateKeyShareHolderGroupByIdRequest,
)
from cobo_waas2.rest import ApiException
from pprint import pprint

# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
    # Replace `<YOUR_PRIVATE_KEY>` with your private key
    api_private_key="<YOUR_PRIVATE_KEY>",
    # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
    host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = cobo_waas2.WalletsMPCWalletsApi(api_client)
    vault_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
    key_share_holder_group_id = "e8257ac8-76b8-4d1e-a1f9-eec4cb931dce"
    update_key_share_holder_group_by_id_request = (
        cobo_waas2.UpdateKeyShareHolderGroupByIdRequest(
            update_key_share_holder_group_action="UpgradeToMainGroup"
        )
    )

    try:
        # Update key share holder group
        api_response = api_instance.update_key_share_holder_group_by_id(
            vault_id,
            key_share_holder_group_id,
            update_key_share_holder_group_by_id_request=update_key_share_holder_group_by_id_request,
        )
        print(
            "The response of WalletsMPCWalletsApi->update_key_share_holder_group_by_id:\n"
        )
        pprint(api_response)
    except Exception as e:
        print(
            "Exception when calling WalletsMPCWalletsApi->update_key_share_holder_group_by_id: %s\n"
            % e
        )

// Import classes:
import com.cobo.waas2.ApiClient;
import com.cobo.waas2.ApiException;
import com.cobo.waas2.Configuration;
import com.cobo.waas2.Env;
import com.cobo.waas2.api.WalletsMpcWalletsApi;
import com.cobo.waas2.model.*;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    // Select the development environment. To use the production environment, replace `Env.DEV` with
    // `Env.PROD
    defaultClient.setEnv(Env.DEV);

    // Replace `<YOUR_PRIVATE_KEY>` with your private key
    defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
    WalletsMpcWalletsApi apiInstance = new WalletsMpcWalletsApi();
    UUID vaultId = UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479");
    String keyShareHolderGroupId = "e8257ac8-76b8-4d1e-a1f9-eec4cb931dce";
    UpdateKeyShareHolderGroupByIdRequest updateKeyShareHolderGroupByIdRequest =
        new UpdateKeyShareHolderGroupByIdRequest()
            .updateKeyShareHolderGroupAction(UpdateGroupAction.UPGRADETOMAINGROUP);
    try {
      KeyShareHolderGroup result =
          apiInstance.updateKeyShareHolderGroupById(
              vaultId, keyShareHolderGroupId, updateKeyShareHolderGroupByIdRequest);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println(
          "Exception when calling WalletsMpcWalletsApi#updateKeyShareHolderGroupById");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

package main

import (
	"context"
	"fmt"
	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
	"os"
)

func main() {
	vaultId := "f47ac10b-58cc-4372-a567-0e02b2c3d479"
	keyShareHolderGroupId := "e8257ac8-76b8-4d1e-a1f9-eec4cb931dce"
	updateKeyShareHolderGroupByIdRequest := *coboWaas2.NewUpdateKeyShareHolderGroupByIdRequest(coboWaas2.UpdateGroupAction("UpgradeToMainGroup"))

	configuration := coboWaas2.NewConfiguration()
	// Initialize the API client
	apiClient := coboWaas2.NewAPIClient(configuration)
	ctx := context.Background()

	// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
	// Replace `<YOUR_PRIVATE_KEY>` with your private key
	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
		Secret: "<YOUR_PRIVATE_KEY>",
	})
	resp, r, err := apiClient.WalletsMPCWalletsAPI.UpdateKeyShareHolderGroupById(ctx, vaultId, keyShareHolderGroupId).
		UpdateKeyShareHolderGroupByIdRequest(updateKeyShareHolderGroupByIdRequest).
		Execute()
	if err != nil {
		fmt.Fprintf(
			os.Stderr,
			"Error when calling `WalletsMPCWalletsAPI.UpdateKeyShareHolderGroupById``: %v\n",
			err,
		)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `UpdateKeyShareHolderGroupById`: KeyShareHolderGroup
	fmt.Fprintf(
		os.Stdout,
		"Response from `WalletsMPCWalletsAPI.UpdateKeyShareHolderGroupById`: %v\n",
		resp,
	)
}

const CoboWaas2 = require("@cobo/cobo-waas2");
// Initialize the API client
const apiClient = CoboWaas2.ApiClient.instance;
// Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
apiClient.setEnv(CoboWaas2.Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
// Call the API
const apiInstance = new CoboWaas2.WalletsMPCWalletsApi();
const vault_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
const key_share_holder_group_id = "e8257ac8-76b8-4d1e-a1f9-eec4cb931dce";
const opts = {
  UpdateKeyShareHolderGroupByIdRequest:
    CoboWaas2.UpdateKeyShareHolderGroupByIdRequest.constructFromObject({
      update_key_share_holder_group_action: "UpgradeToMainGroup",
      original_main_group_handling: "Invalidate",
    }),
};
apiInstance
  .updateKeyShareHolderGroupById(vault_id, key_share_holder_group_id, opts)
  .then(
    (data) => {
      console.log("API called successfully. Returned data: " + data);
    },
    (error) => {
      console.error(error);
    },
  );

{
  "key_share_holder_group_id": "b33130a9-6e18-44a9-9e48-8b3b41921f0e",
  "type": "MainGroup",
  "tss_key_share_groups": [
    {
      "tss_key_share_group_id": "mMedDioOKhTlhGyQRzMv",
      "curve": "SECP256K1",
      "root_pubkey": "xpub661MyMwAqRbcG4vPNi58VQJrXW8D9VzmauuRq2rTY3oUVnKGuLTxQxvvoEXgLvZ7N9GQXQkWVgKn1rzEUUEm4NdvrBKUqjpNJEnn2UL4rYq"
    }
  ],
  "key_share_holders": [
    {
      "name": "Key share holder name",
      "type": "API",
      "tss_node_id": "coboAbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdefghi",
      "online": true,
      "signer": true,
      "status": "Valid",
      "account_id": "auth0|cobo|839305394802991371"
    }
  ],
  "participants": 3,
  "threshold": 2,
  "status": "Valid",
  "created_timestamp": 1718619403933
}
{
"error_code": 123,
"error_message": "<string>",
"error_id": "0b6ddf19083c4bd1a9ca01bec44b24dd"
}
{
"error_code": 123,
"error_message": "<string>",
"error_id": "0b6ddf19083c4bd1a9ca01bec44b24dd"
}
Try Cobo WaaS Skill in your AI coding assistant (Claude Code, Cursor, etc.). Describe your needs in natural language to auto-generate production-ready SDK code and debug faster 🚀
import cobo_waas2
from cobo_waas2.models.key_share_holder_group import KeyShareHolderGroup
from cobo_waas2.models.update_key_share_holder_group_by_id_request import (
    UpdateKeyShareHolderGroupByIdRequest,
)
from cobo_waas2.rest import ApiException
from pprint import pprint

# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
    # Replace `<YOUR_PRIVATE_KEY>` with your private key
    api_private_key="<YOUR_PRIVATE_KEY>",
    # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
    host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = cobo_waas2.WalletsMPCWalletsApi(api_client)
    vault_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
    key_share_holder_group_id = "e8257ac8-76b8-4d1e-a1f9-eec4cb931dce"
    update_key_share_holder_group_by_id_request = (
        cobo_waas2.UpdateKeyShareHolderGroupByIdRequest(
            update_key_share_holder_group_action="UpgradeToMainGroup"
        )
    )

    try:
        # Update key share holder group
        api_response = api_instance.update_key_share_holder_group_by_id(
            vault_id,
            key_share_holder_group_id,
            update_key_share_holder_group_by_id_request=update_key_share_holder_group_by_id_request,
        )
        print(
            "The response of WalletsMPCWalletsApi->update_key_share_holder_group_by_id:\n"
        )
        pprint(api_response)
    except Exception as e:
        print(
            "Exception when calling WalletsMPCWalletsApi->update_key_share_holder_group_by_id: %s\n"
            % e
        )

// Import classes:
import com.cobo.waas2.ApiClient;
import com.cobo.waas2.ApiException;
import com.cobo.waas2.Configuration;
import com.cobo.waas2.Env;
import com.cobo.waas2.api.WalletsMpcWalletsApi;
import com.cobo.waas2.model.*;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    // Select the development environment. To use the production environment, replace `Env.DEV` with
    // `Env.PROD
    defaultClient.setEnv(Env.DEV);

    // Replace `<YOUR_PRIVATE_KEY>` with your private key
    defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
    WalletsMpcWalletsApi apiInstance = new WalletsMpcWalletsApi();
    UUID vaultId = UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479");
    String keyShareHolderGroupId = "e8257ac8-76b8-4d1e-a1f9-eec4cb931dce";
    UpdateKeyShareHolderGroupByIdRequest updateKeyShareHolderGroupByIdRequest =
        new UpdateKeyShareHolderGroupByIdRequest()
            .updateKeyShareHolderGroupAction(UpdateGroupAction.UPGRADETOMAINGROUP);
    try {
      KeyShareHolderGroup result =
          apiInstance.updateKeyShareHolderGroupById(
              vaultId, keyShareHolderGroupId, updateKeyShareHolderGroupByIdRequest);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println(
          "Exception when calling WalletsMpcWalletsApi#updateKeyShareHolderGroupById");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

package main

import (
	"context"
	"fmt"
	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
	"os"
)

func main() {
	vaultId := "f47ac10b-58cc-4372-a567-0e02b2c3d479"
	keyShareHolderGroupId := "e8257ac8-76b8-4d1e-a1f9-eec4cb931dce"
	updateKeyShareHolderGroupByIdRequest := *coboWaas2.NewUpdateKeyShareHolderGroupByIdRequest(coboWaas2.UpdateGroupAction("UpgradeToMainGroup"))

	configuration := coboWaas2.NewConfiguration()
	// Initialize the API client
	apiClient := coboWaas2.NewAPIClient(configuration)
	ctx := context.Background()

	// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
	// Replace `<YOUR_PRIVATE_KEY>` with your private key
	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
		Secret: "<YOUR_PRIVATE_KEY>",
	})
	resp, r, err := apiClient.WalletsMPCWalletsAPI.UpdateKeyShareHolderGroupById(ctx, vaultId, keyShareHolderGroupId).
		UpdateKeyShareHolderGroupByIdRequest(updateKeyShareHolderGroupByIdRequest).
		Execute()
	if err != nil {
		fmt.Fprintf(
			os.Stderr,
			"Error when calling `WalletsMPCWalletsAPI.UpdateKeyShareHolderGroupById``: %v\n",
			err,
		)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `UpdateKeyShareHolderGroupById`: KeyShareHolderGroup
	fmt.Fprintf(
		os.Stdout,
		"Response from `WalletsMPCWalletsAPI.UpdateKeyShareHolderGroupById`: %v\n",
		resp,
	)
}

const CoboWaas2 = require("@cobo/cobo-waas2");
// Initialize the API client
const apiClient = CoboWaas2.ApiClient.instance;
// Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
apiClient.setEnv(CoboWaas2.Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
// Call the API
const apiInstance = new CoboWaas2.WalletsMPCWalletsApi();
const vault_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
const key_share_holder_group_id = "e8257ac8-76b8-4d1e-a1f9-eec4cb931dce";
const opts = {
  UpdateKeyShareHolderGroupByIdRequest:
    CoboWaas2.UpdateKeyShareHolderGroupByIdRequest.constructFromObject({
      update_key_share_holder_group_action: "UpgradeToMainGroup",
      original_main_group_handling: "Invalidate",
    }),
};
apiInstance
  .updateKeyShareHolderGroupById(vault_id, key_share_holder_group_id, opts)
  .then(
    (data) => {
      console.log("API called successfully. Returned data: " + data);
    },
    (error) => {
      console.error(error);
    },
  );

Authorizations

BIZ-API-KEY
string
header
required

The API key. For more details, refer to API key.

In the API playground, enter your API secret, and your API key will be accordingly calculated.

Path Parameters

vault_id
string<uuid>
required

The vault ID, which you can retrieve by calling List all vaults.

key_share_holder_group_id
string
required

The key share holder group ID.

Body

application/json
update_key_share_holder_group_action
enum<string>
required

The available actions of key share holder group update. Possible values include:

  • UpgradeToMainGroup: This upgrades an active Signing Group to the Main Group. The original Main Group will be permanently deleted.
Available options:
UpgradeToMainGroup
Example:

"UpgradeToMainGroup"

original_main_group_handling
enum<string>
default:Invalidate

The action to take on the original Main Group when upgrading a Signing Group to the Main Group. Defaults to Invalidate if not provided. Possible values include:

  • Invalidate: The original Main Group will be permanently invalidated.

  • ConvertToSigningGroup: The original Main Group will be converted to a Signing Group.

Available options:
Invalidate,
ConvertToSigningGroup
Example:

"Invalidate"

Response

Successfully modify mpc tss group

The data for key share holder group information.

key_share_holder_group_id
string

The key share holder group ID.

Example:

"b33130a9-6e18-44a9-9e48-8b3b41921f0e"

type
enum<string>

The type of key share holder group. Possible values include:

Note: For MainGroup and SigningGroup, a Cobo key share holder will be added automatically.

Available options:
MainGroup,
SigningGroup,
RecoveryGroup
Example:

"MainGroup"

tss_key_share_groups
object[]
key_share_holders
object[]
participants
integer

The number of key share holders in this key share holder group.

Example:

3

threshold
integer

The number of key share holders required to approve each operation in this key share holder group.

Example:

2

status
enum<string>

The status of the key share holder group. Possible values include:

  • New: The key share holder group has been newly created. The status will become Valid after you call Create TSS request and specifying this key share holder group as the target key share holder group.

  • Valid: The key share holder group is valid.

  • Unavailable: The key share holder group is currently unavailable. This status appears when a key share holder uses mobile co-signer to change node. For example, when a key share holder changes to a new phone or loses their phone, and is in the process of setting up Cobo Guard on their new phone.

Available options:
New,
Valid,
Unavailable
Example:

"Valid"

created_timestamp
integer<int64>

The key share holder group's creation time in Unix timestamp format, measured in milliseconds.

Example:

1718619403933