Create

POST /shared-wallets

status: stable

Create a shared wallet from either an account public key and script templates or mnemonic and script templates.

application/json

Body object Required

One of:
  • name string Required

    Minimum length is 1, maximum length is 255.

  • mnemonic_sentence array[string(bip-0039-mnemonic-word{english})] Required

    A list of mnemonic words

    At least 15 but not more than 24 elements.

  • mnemonic_second_factor array[string(bip-0039-mnemonic-word{english})]

    An optional passphrase used to encrypt the mnemonic sentence.

    At least 9 but not more than 12 elements.

  • passphrase string Required

    A master passphrase to lock and protect the wallet for sensitive operation (e.g. sending funds)

    Minimum length is 10, maximum length is 255.

  • account_index string Required

    An individual segment within a derivation path.

    The H suffix indicates a Hardened child private key, which means that children of this key cannot be derived from the public key. Indices without a H suffix are called Soft.

  • payment_script_template object Required
    Hide payment_script_template attributes Show payment_script_template attributes object
    • cosigners object Required

      Map of cosigners and their account public keys. Use key as in &cosigner, eg. "cosigner#"or 'self'

    • template string | object Required

      One of:

      Leaf value for a script designating a cosigner co-sharing the script.

      Format should match the following pattern: ^(cosigner#)[0-9]*$.

  • delegation_script_template object
    Hide delegation_script_template attributes Show delegation_script_template attributes object
    • cosigners object Required

      Map of cosigners and their account public keys. Use key as in &cosigner, eg. "cosigner#"or 'self'

    • template string | object Required

      One of:

      Leaf value for a script designating a cosigner co-sharing the script.

      Format should match the following pattern: ^(cosigner#)[0-9]*$.

  • script_validation string

    Script validation level. Required validation sifts off scripts that would not be accepted by the ledger. Recommended level filters out scripts that do not pass required validation and additionally when:

    • 'all' is non-empty
    • there are redundant timelocks in a given level
    • there are no duplicated verification keys in a given level
    • 'at_least' coefficient is positive
    • 'all', 'any' are non-empty and `'at_least' has no less elements in the list than the coefficient after timelocks are filtered out.

    Values are required or recommended.

  • one_change_address_mode boolean

    Default value is false.

Responses

  • 415 application/json

    Unsupported Media Type

    Hide response attributes Show response attributes object
    • message string Required

      May occur when providing an invalid 'Content-Type' header.

    • code string Required

      Value is unsupported_media_type.

  • 409 application/json

    Conflict

    Hide response attributes Show response attributes object
    • message string Required

      May occur when a otherwise valid request would yield a wallet that already exists.

    • code string Required

      Value is wallet_already_exists.

  • 406 application/json

    Not Acceptable

    Hide response attributes Show response attributes object
    • message string Required

      May occur when providing an invalid 'Accept' header.

    • code string Required

      Value is not_acceptable.

  • 400 application/json

    Bad Request

    Hide response attributes Show response attributes object
    • message string Required

      May occur when a request is not well-formed; that is, it fails to parse successfully. This could be the case when some required parameters are missing or, when malformed values are provided.

    • code string Required

      Value is bad_request.

  • 403 application/json

    Forbidden

    Hide response attributes Show response attributes object
    • message string Required

      Returned when a user tries to create a shared wallet with script template that does not pass validation.

    • code string Required

      Value is shared_wallet_script_template_invalid.

  • 500 application/json

    Forbidden

    Hide response attributes Show response attributes object
    • message string Required

      May occur when there is a missing reward account but wallet participates in staking.

    • code string Required

      Value is missing_reward_account.

  • 201 application/json

    Created

    One of:
    Hide attributes Show attributes
    • id string(hex) Required

      A unique identifier for the wallet

      Minimum length is 40, maximum length is 40.

    • name string Required

      Minimum length is 1, maximum length is 255.

    • account_index string Required

      An individual segment within a derivation path.

      The H suffix indicates a Hardened child private key, which means that children of this key cannot be derived from the public key. Indices without a H suffix are called Soft.

    • address_pool_gap integer Required

      Number of consecutive unused addresses allowed.

      IMPORTANT DISCLAIMER: Using values other than 20 automatically makes your wallet invalid with regards to BIP-44 address discovery. It means that you will not be able to fully restore your wallet in a different software which is strictly following BIP-44.

      Beside, using large gaps is not recommended as it may induce important performance degradations. Use at your own risks.

      IMPORTANT DISCLAIMER 2: There is no way to import addresses generated outside (e.g. using cardano-addresses) into the wallet. Wallet only discovers transactions on its used and unused addresses that are within its currently seen address_pool_gap. Transactions on addresses that "belong" to the wallet but happen to be beyond its address_pool_gap will not be visible to the wallet. This is a technical limitation of the industry standard BIP-44. See also CIP-1852.

      Minimum value is 10, maximum value is 100000. Default value is 20.

    • payment_script_template object Required
      Hide payment_script_template attributes Show payment_script_template attributes object
      • cosigners object Required

        Map of cosigners and their account public keys. Use key as in &cosigner, eg. "cosigner#"

        Hide cosigners attributes Show cosigners attributes object
        • Additional properties
        • key string
      • template string | object Required

        One of:

        Leaf value for a script designating a cosigner co-sharing the script.

        Format should match the following pattern: ^(cosigner#)[0-9]*$.

    • delegation_script_template object
      Hide delegation_script_template attributes Show delegation_script_template attributes object
      • cosigners object Required

        Map of cosigners and their account public keys. Use key as in &cosigner, eg. "cosigner#"

        Hide cosigners attributes Show cosigners attributes object
        • Additional properties
        • key string
      • template string | object Required

        One of:

        Leaf value for a script designating a cosigner co-sharing the script.

        Format should match the following pattern: ^(cosigner#)[0-9]*$.

    • state object Required
      Hide state attribute Show state attribute object
      • status string Required

        An incomplete shared wallet does not have a complete set of keys, so the only possible status is incomplete.

        Value is incomplete.

POST /shared-wallets
curl \
 --request POST 'https://localhost:8090/v2/shared-wallets' \
 --header "Content-Type: application/json" \
 --data '{"name":"Alan's Wallet","mnemonic_sentence":["squirrel","material","silly","twice","direct","slush","pistol","razor","become","junk","kingdom","flee","squirrel","silly","twice"],"mnemonic_second_factor":["squirrel","material","silly","twice","direct","slush","pistol","razor","become"],"passphrase":"Secure Passphrase","account_index":"1852H","payment_script_template":{"cosigners":[{"cosigner#0":"acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"},{"cosigner#0":"self"}],"template":"string"},"delegation_script_template":{"cosigners":[{"cosigner#0":"acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"},{"cosigner#0":"self"}],"template":"string"},"script_validation":"required","one_change_address_mode":false}'
{
  "name": "Alan's Wallet",
  "mnemonic_sentence": [
    "squirrel",
    "material",
    "silly",
    "twice",
    "direct",
    "slush",
    "pistol",
    "razor",
    "become",
    "junk",
    "kingdom",
    "flee",
    "squirrel",
    "silly",
    "twice"
  ],
  "mnemonic_second_factor": [
    "squirrel",
    "material",
    "silly",
    "twice",
    "direct",
    "slush",
    "pistol",
    "razor",
    "become"
  ],
  "passphrase": "Secure Passphrase",
  "account_index": "1852H",
  "payment_script_template": {
    "cosigners": [
      {
        "cosigner#0": "acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"
      },
      {
        "cosigner#0": "self"
      }
    ],
    "template": "string"
  },
  "delegation_script_template": {
    "cosigners": [
      {
        "cosigner#0": "acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"
      },
      {
        "cosigner#0": "self"
      }
    ],
    "template": "string"
  },
  "script_validation": "required",
  "one_change_address_mode": false
}
{
  "name": "Alan's Wallet",
  "account_public_key": "string",
  "account_index": "1852H",
  "payment_script_template": {
    "cosigners": [
      {
        "cosigner#0": "acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"
      },
      {
        "cosigner#0": "self"
      }
    ],
    "template": "string"
  },
  "delegation_script_template": {
    "cosigners": [
      {
        "cosigner#0": "acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"
      },
      {
        "cosigner#0": "self"
      }
    ],
    "template": "string"
  },
  "script_validation": "required"
}
Response examples (415)
{
  "message": "string",
  "code": "unsupported_media_type"
}
Response examples (409)
{
  "message": "string",
  "code": "wallet_already_exists"
}
Response examples (406)
{
  "message": "string",
  "code": "not_acceptable"
}
Response examples (400)
{
  "message": "string",
  "code": "bad_request"
}
Response examples (403)
{
  "message": "string",
  "code": "shared_wallet_script_template_invalid"
}
Response examples (500)
{
  "message": "string",
  "code": "missing_reward_account"
}
{
  "id": "2512a00e9653fe49a44a5886202e24d77eeb998f",
  "name": "Alan's Wallet",
  "account_index": "1852H",
  "address_pool_gap": 20,
  "payment_script_template": {
    "cosigners": [
      {
        "cosigner#0": "acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"
      }
    ],
    "template": "string"
  },
  "delegation_script_template": {
    "cosigners": [
      {
        "cosigner#0": "acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"
      }
    ],
    "template": "string"
  },
  "state": {
    "status": "incomplete"
  }
}
{
  "id": "2512a00e9653fe49a44a5886202e24d77eeb998f",
  "name": "Alan's Wallet",
  "account_index": "1852H",
  "address_pool_gap": 20,
  "passphrase": {
    "last_updated_at": "2019-02-27T14:46:45Z"
  },
  "payment_script_template": {
    "cosigners": [
      {
        "cosigner#0": "acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"
      }
    ],
    "template": "string"
  },
  "delegation_script_template": {
    "cosigners": [
      {
        "cosigner#0": "acct_shared_xvk1z8kc04yh544ksc9h2yhp7p6qwpf6syv5qnm8sgnhdne5z2esht5cwssxsec2wzw3nhxm2d9ph4s6ldmqdvxa0zuxzmukpajhyc7flug3te037"
      }
    ],
    "template": "string"
  },
  "balance": {
    "available": {
      "quantity": 42000000,
      "unit": "lovelace"
    },
    "reward": {
      "quantity": 42000000,
      "unit": "lovelace"
    },
    "total": {
      "quantity": 42000000,
      "unit": "lovelace"
    }
  },
  "assets": {
    "available": [
      {
        "policy_id": "65ab82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b",
        "asset_name": "string",
        "quantity": 42
      }
    ],
    "total": [
      {
        "policy_id": "65ab82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b",
        "asset_name": "string",
        "quantity": 42
      }
    ]
  },
  "delegation": {
    "active": {
      "status": "delegating",
      "target": "1423856bc91c49e928f6f30f4e8d665d53eb4ab6028bd0ac971809d514c92db1"
    },
    "next": [
      {
        "status": "not_delegating",
        "changes_at": {
          "epoch_number": 14,
          "epoch_start_time": "2020-01-22T10:06:39Z"
        }
      }
    ]
  },
  "state": {
    "status": "ready"
  },
  "tip": {
    "absolute_slot_number": 8086,
    "slot_number": 1337,
    "epoch_number": 14,
    "time": "2019-02-27T14:46:45Z",
    "height": {
      "quantity": 1337,
      "unit": "block"
    }
  }
}