Skip to main content
POST
/
wallets
/
mpc
/
vaults
/
{vault_id}
/
key_share_holder_groups
import cobo_waas2
from cobo_waas2.models.create_key_share_holder_group_request import (
    CreateKeyShareHolderGroupRequest,
)
from cobo_waas2.models.key_share_holder_group import KeyShareHolderGroup
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"
    create_key_share_holder_group_request = cobo_waas2.CreateKeyShareHolderGroupRequest(
        key_share_holder_group_type="MainGroup",
        participants=3,
        threshold=2,
        key_share_holders=[
                    cobo_waas2.CreateKeyShareHolder(
                        name="Key share holder name",
                        type="API",
                        tss_node_id="coboAbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdefghi",
                        signer=True
                    )
                ]
    )

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

{
  "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
}
import cobo_waas2
from cobo_waas2.models.create_key_share_holder_group_request import (
    CreateKeyShareHolderGroupRequest,
)
from cobo_waas2.models.key_share_holder_group import KeyShareHolderGroup
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"
    create_key_share_holder_group_request = cobo_waas2.CreateKeyShareHolderGroupRequest(
        key_share_holder_group_type="MainGroup",
        participants=3,
        threshold=2,
        key_share_holders=[
                    cobo_waas2.CreateKeyShareHolder(
                        name="Key share holder name",
                        type="API",
                        tss_node_id="coboAbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdefghi",
                        signer=True
                    )
                ]
    )

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

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.

Body

application/json

The request body to create a key share holder group.

key_share_holder_group_type
enum<string>
required

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"

participants
integer
required

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

Notes:

  1. Currently, the available Threshold Signature Schemes (TSS) are 2-2, 2-3, and 3-3 schemes (in the "threshold - participants" format), so you can only set participants to 2 or 3.

  2. threshold must be less than or equal to participants.

Example:

3

threshold
integer
required

The number of key share holders required to sign an operation.

Notes:

  1. Currently, the available Threshold Signature Schemes (TSS) are 2-2, 2-3, and 3-3 schemes (in the "threshold - participants" format), so you can only set threshold to 2 or 3.

  2. threshold must be less than or equal to participants.

Example:

2

key_share_holders
object[]
required

Response

mpc vault successfully created

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

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

Example:

1718619403933