NAV Navigation
JavaScript Shell

Unbound Crypto Asset Security Platform ("CASP") Management API v1.0.2103

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Unbound`s Crypto Asset Security Platform ("CASP") provides the advanced technology and the architecture to secure crypto asset transactions. The crypto asset solution contains the CASP service and different end points (humans or BOTs).

CASP provides the framework to create Accounts, which hold multiple Vaults where secrets are stored. Access control is managed by the Quorum Policy for all of the Participants.

For information about using these APIs, see the Unbound CASP Developers Guide, or the API references:

For more information about CASP, see:

For more information about the BIP standards, see:

Email: Unbound Security Support Web: Unbound Security Support

System

Get configuration

Code samples


fetch('/api/v1.0/config',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /api/v1.0/config

GET /config

Returns the configuration including supported blockchain providers and adaptors

Responses

Status Meaning Description Schema
default Default Returns configuration None

Get system status

Code samples


fetch('/api/v1.0/status',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /api/v1.0/status

GET /status

Used for checking the system operational status

Responses

Status Meaning Description Schema
200 OK Current system status None

Ledger Operations

Get ledger address balance

Code samples


const headers = {
  'Accept':'application/json'

};

fetch('/api/v1.0/ledgers/{ledgerId}/addresses/{address}/balance',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /api/v1.0/ledgers/{ledgerId}/addresses/{address}/balance \
  -H 'Accept: application/json'

GET /ledgers/{ledgerId}/addresses/{address}/balance

Request balance for one or more assets per ledger address.

Parameters

Name In Type Required Description
ledgerId path string true none
address path string true The target address the balance is required for
assets query array[string] false A list of asset symbols the balance is requested for. If this parameter is not provided, then the default asset defined for the ledger is used.

Example responses

200 Response

{
  "address": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
  "balances": [
    {
      "asset": "YEENUS",
      "amount": 885.82
    },
    {
      "asset": "ETH",
      "amount": 8.2221820926
    },
    {
      "asset": "BOKKY",
      "amount": 0
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Requested balances AddressBalanceResponse
422 Unprocessable Entity One or more the provided arguments is invalid AppError

Validate ledger address

Code samples


const headers = {
  'Accept':'application/json'

};

fetch('/api/v1.0/ledgers/{ledgerId}/addresses/{address}/valid',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /api/v1.0/ledgers/{ledgerId}/addresses/{address}/valid \
  -H 'Accept: application/json'

GET /ledgers/{ledgerId}/addresses/{address}/valid

Check the validity of a ledger address.

Parameters

Name In Type Required Description
ledgerId path string true none
address path string true The address to check

Example responses

200 Response

{
  "address": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
  "valid": true
}

Responses

Status Meaning Description Schema
200 OK Validity test result Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» address string false none Target address that was checked
» valid boolean false none True if the address is valid or false otherwise

Convert public key to ledger address

Code samples

const inputBody = '{
  "keys": [
    "3056301006072A8648CE3D020106052B8104000A03420004A17D64FCFCE5FE10943FCC7E6BBDE1BD49EBC596297813C4FE3CCB0343B44236DD189B32B0C88D6F12067F1237A95286C82162B078D686A79C986E1204A6E162"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'

};

fetch('/api/v1.0/ledgers/{ledgerId}/address-from-publickey',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X POST /api/v1.0/ledgers/{ledgerId}/address-from-publickey \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST /ledgers/{ledgerId}/address-from-publickey

Convert a public key to ledger address

Body parameter

{
  "keys": [
    "3056301006072A8648CE3D020106052B8104000A03420004A17D64FCFCE5FE10943FCC7E6BBDE1BD49EBC596297813C4FE3CCB0343B44236DD189B32B0C88D6F12067F1237A95286C82162B078D686A79C986E1204A6E162"
  ]
}

Parameters

Name In Type Required Description
ledgerId path string true none
body body object false none
» keys body [string] false none

Example responses

200 Response

{
  "items": [
    {
      "address": "0x63e4a30a5ce88660BBf99D7B0547E718558bC662"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Keys converted successfully Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» items [Address] false none none
»» address string false none none

Vault Operations

Refer to the Vault Operations section in the Unbound CASP Developers Guide.

For some functionality, you may need to refer to the BYOW Vault Operation APIs. For example, the endpoint to create a new vault is described there.

Get wallet balance

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/api/v1.0/vaults/{vaultId}/balance',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /api/v1.0/vaults/{vaultId}/balance \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /vaults/{vaultId}/balance

Get vault wallet balance

Parameters

Name In Type Required Description
vaultId path string true none
assets query array[string] false A list of asset symbols the balance is requested for. If this parameter is not provided, then the default asset defined for the ledger is used.
coin query string false none
account query string false none

Example responses

200 Response

{
  "address": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
  "balances": [
    {
      "asset": "YEENUS",
      "amount": 885.82
    },
    {
      "asset": "ETH",
      "amount": 8.2221820926
    },
    {
      "asset": "BOKKY",
      "amount": 0
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Requested vault balance VaultBalanceResponse

Create withdrawal request

Code samples

const inputBody = '{
  "amount": "1.3",
  "asset": "YEENUS",
  "recipientAddress": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
  "description": "Payment 3332",
  "fee": "HIGH"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/api/v1.0/vaults/{vaultId}/withdrawals',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X POST /api/v1.0/vaults/{vaultId}/withdrawals \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /vaults/{vaultId}/withdrawals

Create a new withdrawal request.
The request is sent to CASP and starts the quorum approval process, which can take some time. Once the request is approved, CASP calls the POST /sign_complete_callback and the required signed transactions are sent to the ledger.

Body parameter

{
  "amount": "1.3",
  "asset": "YEENUS",
  "recipientAddress": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
  "description": "Payment 3332",
  "fee": "HIGH"
}

Parameters

Name In Type Required Description
vaultId path string true none
body body WithdrawalRequest true none

Example responses

200 Response

{
  "id": "9767714e-4a32-4264-af91-0c48d437e698",
  "status": "EXECUTING",
  "isComplete": false,
  "appData": {
    "txs": [
      {
        "serialized": "f868808477359400828ccd94f6ff95d53e08c9660dc7820fd5a775484f77183a80b844a9059cbb0000000000000000000000007827d7fdb2b161a27ffed3cc25c560d7aefe2bd50000000000000000000000000000000000000000000000000000000007bfa480808080"
      }
    ]
  },
  "description": "dasdfa dfasdf "
}

Responses

Status Meaning Description Schema
200 OK Withdrawal request created successfully Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» operationID string false none The operation ID from CASP
» status string false none The request status. Normally this is EXECUTING.
» isComplete boolean false none The request completion status. Normally this is false as the request has just been submitted.
» description string false none The request description
» recipientVault string false none Optionally the recipient vault
» appData WithdrawalProviderData false none none
»» request WithdrawalRequest false none none
»»» recipientAddress string true none The ledger address to recieve the assets
»»» recipientVault string false none The target vault ID for internal transfers (originally for staking-pools)
»»» asset string false none (Optional) The asset to send. If not provided, the default ledger asset is used.
»»» amount any true none The asset amount to send

oneOf

Name Type Required Restrictions Description
»»»» anonymous number(double) false none none

xor

Name Type Required Restrictions Description
»»»» anonymous string false none none

continued

Name Type Required Restrictions Description
»»» description string true none A short text that describes the puprpose of this withdrawal.
»»» fee string false none A fee constant. Usually specificied as 'HIGH', 'MEDIUM' or 'LOW', but some ledgers use custom fee constants. If not provided, the ledger's default fee is used.
»» txs [object] false none A list of ledger tranasactions created for the withdrawal
»»» serialized string false none The HEX encoded serialized transaction

Update vault info

Code samples

const inputBody = '{
  "name": "string",
  "description": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'*/*',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/vaults/{id}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X PUT /casp/api/v1.0/mng/vaults/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer API_KEY'

PUT /casp/api/v1.0/mng/vaults/{id}

Updates the details of an existing vault. The vault name and description can be updated.

Body parameter

{
  "name": "string",
  "description": "string"
}

Parameters

Name In Type Required Description
id path string true Vault ID
body body UpdateVaultRequest true Update vault Request

Example responses

404 Response

Responses

Status Meaning Description Schema
200 OK OK None
202 Accepted Vault update accepted and needs to be approved by admin quorum. None
404 Not Found Vault not found CASPErrorResponse
500 Internal Server Error Update vault failed CASPErrorResponse

Delete an existing vault

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/vaults/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X DELETE /casp/api/v1.0/mng/vaults/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

DELETE /casp/api/v1.0/mng/vaults/{id}

Deletes an existing vault. Only vaults which are not activated yet can be deleted.

Parameters

Name In Type Required Description
id path string true Vault ID

Example responses

403 Response

{
  "type": "string",
  "title": "string",
  "details": "string",
  "status": 0
}

Responses

Status Meaning Description Schema
200 OK OK None
403 Forbidden Vault deletion is not allowed CASPErrorResponse
404 Not Found Vault not found CASPErrorResponse
500 Internal Server Error Delete vault failed CASPErrorResponse

Schemas

AccountAuditItem

{
  "auditSeverity": "string",
  "event": "string",
  "initiatorId": "string",
  "initiatorName": "string",
  "timestamp": "string",
  "duration": 0,
  "error": "string",
  "details": "string",
  "accountId": "string",
  "accountName": "string",
  "version": 0,
  "participantId": "string",
  "participantName": "string",
  "global": true
}

Properties

Name Type Required Restrictions Description
auditSeverity string false none none
event string false none none
initiatorId string false none none
initiatorName string false none none
timestamp string false none none
duration integer(int64) false none none
error string false none none
details string false none none
accountId string false none none
accountName string false none none
version number false none none
participantId string false none none
participantName string false none none
global boolean false none none

AccountDetails

{
  "id": "string",
  "name": "string",
  "isGlobal": true,
  "isDeletable": true,
  "creationTime": "string",
  "stats": {
    "participants": {
      "total": 0,
      "inactive": 0
    },
    "operations": {
      "total": 0,
      "pending": 0
    },
    "vaults": {
      "total": 0,
      "inactive": 0,
      "pending": 0
    }
  }
}

Properties

Name Type Required Restrictions Description
id string true none Account ID
name string true none Account name
isGlobal boolean true none Is global account
isDeletable boolean true none Is account can be deleted
creationTime string true none Account creation time
stats Stats false none none

AccountsAuditResponse

{
  "totalItems": 0,
  "items": [
    {
      "auditSeverity": "string",
      "event": "string",
      "initiatorId": "string",
      "initiatorName": "string",
      "timestamp": "string",
      "duration": 0,
      "error": "string",
      "details": "string",
      "accountId": "string",
      "accountName": "string",
      "version": 0,
      "participantId": "string",
      "participantName": "string",
      "global": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [AccountAuditItem] true none Items

ActivateParticipantResponse

{
  "id": "string",
  "activationCode": "string",
  "name": "string",
  "rejoinOperationIds": [
    "string"
  ],
  "failedToRejoinVaults": [
    {
      "vaultId": "string",
      "vaultName": "string",
      "error": "string"
    }
  ],
  "serverAuthenticationKey": "string",
  "serverEncryptionKey": "string"
}

Properties

Name Type Required Restrictions Description
id string true none ParticipantWithVault ID
activationCode string true none Activation code for the specified participant
name string true none ParticipantWithVault name
rejoinOperationIds [string] true none Rejoin operationIds
failedToRejoinVaults [RejoinVaultErrorResponse] true none Rejoin operation failed on vault
serverAuthenticationKey string false none The server authentication key
serverEncryptionKey string false none The server encryption key

AddBip44AccountRequest

{
  "accountName": "string"
}

Properties

Name Type Required Restrictions Description
accountName string true none The account name

AddBip44CoinRequest

{
  "coinType": 0
}

Properties

Name Type Required Restrictions Description
coinType integer(int32) true none The coin type

AddMemberDetails

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "policyDetails": {
    "id": "string",
    "name": "string"
  },
  "vaultName": "string",
  "groupName": "string",
  "participantName": "string",
  "participantID": "string"
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID
kind string true none Operation kind
status string true none Operation status.

The status field has the following possible values:
- PENDING - waiting for participant approval.
- PENDING_ACTIVATION - used for rejoining a quorum vault operation.
- WAITING_DATA_COLLECTION - waiting for data collector data.

The sign operation finishes with one of these status values:
- CANCELED - user canceled the operation.
- FAILED - set by a wallet if, for example, the wallet's call to the ledger failed. Also set if the CASP service was not able to sign any of the provided hashes.
- ERROR - the CASP server encountered an internal error.
- COMPLETED
- When working without built-in Wallet - enough participants approved and CASP has the signature.
- When working with built-in Wallet - the wallet successfully sent the signed transaction to the ledger.
- REJECTED - a participant rejected the operation, a rejection policy was selected when CASP was processing policies, or no policy was selected when CASP was processing policies.
statusText string true none Operation status text
createdAt string true none Operation creation time
vaultID string true none Vault ID
description string false none Description of the operation
isApproved boolean true none Approval state for the operation
accountID string true none Account ID for the operation
groups [ApprovalGroupDetails] true none Operation approval groups
policyDetails PolicyDetails false none none
vaultName string true none Vault name for the operation
groupName string true none Group name to join
participantName string true none Participant name
participantID string true none Participan ID

Enumerated Values

Property Value
kind JOIN_VAULT
kind REJOIN_VAULT
kind JOIN_VAULT_ADMIN_QUORUM
kind JOIN_POLICY_VAULT
kind ADD_MEMBER
kind ADMIN_QUORUM_APPROVAL
kind QUORUM_SIGN
kind CALCULATE_PUBLIC_KEY
kind UPDATE_VAULT_ATTRIBUTES
kind ERROR
status PENDING
status WAITING_DATA_COLLECTION
status PENDING_ACTIVATION
status APPROVED
status COMPLETED
status REJECTED
status CANCELED
status FAILED
status ERROR
statusText Pending
statusText Pending activation
statusText Approved
statusText Completed
statusText Rejected
statusText Canceled
statusText Failed
statusText N/A

AddMemberResponse

{
  "operation": {
    "operationID": "string",
    "kind": "JOIN_VAULT",
    "status": "PENDING",
    "statusText": "Pending",
    "createdAt": "string",
    "vaultID": "string",
    "description": "string",
    "isApproved": true,
    "accountID": "string",
    "groups": [
      {
        "name": "string",
        "members": [
          {
            "approvedAt": "string",
            "id": "string",
            "isApproved": true,
            "name": "string",
            "status": "STARTED",
            "approvalGroupAccount": {
              "id": "string",
              "name": "string"
            },
            "label": "string",
            "isGlobal": true,
            "isActive": true,
            "globalStatus": "ACTIVATED",
            "isOffline": true
          }
        ],
        "requiredApprovals": 0,
        "order": 0,
        "deactivateAllowed": true,
        "isOffline": true
      }
    ],
    "policyDetails": {
      "id": "string",
      "name": "string"
    },
    "vaultName": "string"
  },
  "participant": {
    "id": "string",
    "accountID": "string",
    "name": "string",
    "email": "string",
    "status": "NOT_ACTIVATED",
    "isActive": true,
    "accountName": "string",
    "role": "string",
    "pushEnabled": true,
    "offline": true,
    "activeOperations": 0,
    "deviceType": "IOS",
    "creationTime": "string",
    "modificationTime": "string"
  }
}

Properties

Name Type Required Restrictions Description
operation OperationDetails true none none
participant ParticipantDetails true none none

AddVaultParticipantRequest

{
  "participantID": "string",
  "description": "string",
  "policyId": "string"
}

Properties

Name Type Required Restrictions Description
participantID string true none ParticipantWithVault ID
description string false none Description
policyId string false none policy id to join

AllAuditItem

{
  "auditSeverity": "string",
  "event": "string",
  "initiatorId": "string",
  "initiatorName": "string",
  "timestamp": "string",
  "duration": 0,
  "error": "string",
  "details": "string",
  "accountId": "string",
  "accountName": "string",
  "version": 0,
  "participantId": "string",
  "participantName": "string",
  "isGlobal": true,
  "rawTransaction": [
    "string"
  ],
  "amount": 0,
  "assetType": "string",
  "toAddress": [
    "string"
  ],
  "isWhitelisted": true,
  "whitelistAddress": "string",
  "description": "string",
  "policyName": "string",
  "policyID": "string",
  "rejectionReason": "string",
  "dataToSign": "string",
  "publicKey": "string",
  "signature": "string",
  "keySpec": "string",
  "operationID": "string",
  "userID": "string",
  "userName": "string",
  "operationKind": "string",
  "adminQuorum": "string",
  "policies": "string",
  "operationStatus": "string",
  "trustedInstanceID": "string",
  "vaultID": "string",
  "vaultName": "string",
  "participantID": "string",
  "userRole": "string",
  "userEmail": "string",
  "userStatus": "string",
  "derivationString": "string",
  "dataCollectorId": "string",
  "dataCollectorName": "string",
  "attributeTemplateGroup": "string",
  "dataCollectorState": "string",
  "collectedData": "string"
}

Properties

Name Type Required Restrictions Description
auditSeverity string false none none
event string false none none
initiatorId string false none none
initiatorName string false none none
timestamp string false none none
duration integer(int64) false none none
error string false none none
details string false none none
accountId string false none none
accountName string false none none
version number false none none
participantId string false none none
participantName string false none none
isGlobal boolean false none none
rawTransaction [string] false none none
amount integer false none none
assetType string false none none
toAddress [string] false none none
isWhitelisted boolean false none none
whitelistAddress string false none none
description string false none none
policyName string false none none
policyID string false none none
rejectionReason string false none none
dataToSign string false none none
publicKey string false none none
signature string false none none
keySpec string false none none
operationID string false none none
userID string false none none
userName string false none none
operationKind string false none none
adminQuorum string false none none
policies string false none none
operationStatus string false none none
trustedInstanceID string false none none
vaultID string false none none
vaultName string false none none
participantID string false none none
userRole string false none none
userEmail string false none none
userStatus string false none none
derivationString string false none none
dataCollectorId string false none none
dataCollectorName string false none none
attributeTemplateGroup string false none none
dataCollectorState string false none none
collectedData string false none none

AllAuditResponse

{
  "totalItems": 0,
  "items": [
    {
      "auditSeverity": "string",
      "event": "string",
      "initiatorId": "string",
      "initiatorName": "string",
      "timestamp": "string",
      "duration": 0,
      "error": "string",
      "details": "string",
      "accountId": "string",
      "accountName": "string",
      "version": 0,
      "participantId": "string",
      "participantName": "string",
      "isGlobal": true,
      "rawTransaction": [
        "string"
      ],
      "amount": 0,
      "assetType": "string",
      "toAddress": [
        "string"
      ],
      "isWhitelisted": true,
      "whitelistAddress": "string",
      "description": "string",
      "policyName": "string",
      "policyID": "string",
      "rejectionReason": "string",
      "dataToSign": "string",
      "publicKey": "string",
      "signature": "string",
      "keySpec": "string",
      "operationID": "string",
      "userID": "string",
      "userName": "string",
      "operationKind": "string",
      "adminQuorum": "string",
      "policies": "string",
      "operationStatus": "string",
      "trustedInstanceID": "string",
      "vaultID": "string",
      "vaultName": "string",
      "participantID": "string",
      "userRole": "string",
      "userEmail": "string",
      "userStatus": "string",
      "derivationString": "string",
      "dataCollectorId": "string",
      "dataCollectorName": "string",
      "attributeTemplateGroup": "string",
      "dataCollectorState": "string",
      "collectedData": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [AllAuditItem] true none Items

AmountRange

{
  "minimum": 0,
  "maximum": 0
}

Properties

Name Type Required Restrictions Description
minimum number false none lower limit
maximum number false none upper limit

ApiKeyInfo

{
  "clientId": "string",
  "tokenType": "BEARER",
  "expiry_in": 0,
  "scope": "string"
}

Properties

Name Type Required Restrictions Description
clientId string true none API key client_id
tokenType string true none API key token type
expiry_in integer(int64) true none API key expiry in
scope string true none API key scope

Enumerated Values

Property Value
tokenType BEARER

ApprovalGroup

{
  "name": "string",
  "requiredApprovals": 1,
  "members": [
    {
      "id": "string"
    }
  ],
  "isOffline": true
}

Properties

Name Type Required Restrictions Description
name string true none Vault group name
requiredApprovals integer(int32) true none Vault group required approvals
members [ApprovalGroupMember] true none Vault group participants
isOffline boolean true none Vault group isOffline property

ApprovalGroupAccount

{
  "id": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id string true none Account ID
name string true none Account name

ApprovalGroupDetails

{
  "name": "string",
  "members": [
    {
      "approvedAt": "string",
      "id": "string",
      "isApproved": true,
      "name": "string",
      "status": "STARTED",
      "approvalGroupAccount": {
        "id": "string",
        "name": "string"
      },
      "label": "string",
      "isGlobal": true,
      "isActive": true,
      "globalStatus": "ACTIVATED",
      "isOffline": true
    }
  ],
  "requiredApprovals": 0,
  "order": 0,
  "deactivateAllowed": true,
  "isOffline": true
}

Properties

Name Type Required Restrictions Description
name string true none Approval group name
members [ApprovalGroupParticipant] true none A list of participants in the group
requiredApprovals integer(int32) true none The number of group participants that need to give approval
order integer(int32) true none This field determines the order in which groups are prompted for approvals
deactivateAllowed boolean true none A group participant can be suspended or revoked from this group
isOffline boolean true none Group is offline - conclude only offline participants

ApprovalGroupMember

{
  "id": "string"
}

Properties

Name Type Required Restrictions Description
id string true none Participant ID

ApprovalGroupParticipant

{
  "approvedAt": "string",
  "id": "string",
  "isApproved": true,
  "name": "string",
  "status": "STARTED",
  "approvalGroupAccount": {
    "id": "string",
    "name": "string"
  },
  "label": "string",
  "isGlobal": true,
  "isActive": true,
  "globalStatus": "ACTIVATED",
  "isOffline": true
}

Properties

Name Type Required Restrictions Description
approvedAt string false none ParticipantWithVault approval time
id string true none ParticipantWithVault ID
isApproved boolean true none ParticipantWithVault approval state
name string true none ParticipantWithVault name
status string true none ParticipantWithVault task status
approvalGroupAccount ApprovalGroupAccount false none none
label string true none ParticipantWithVault label
isGlobal boolean true none ParticipantWithVault global state
isActive boolean true none none
globalStatus string true none none
isOffline boolean true none none

Enumerated Values

Property Value
status STARTED
status ACTIVATED
status DECLINED
status REVOKED
status SUSPENDED
globalStatus ACTIVATED
globalStatus REACTIVATING
globalStatus SUSPENDED
globalStatus REVOKED

AttributeRuleDetailsResponse

{
  "id": "string",
  "op": "string",
  "value": "string"
}

Properties

Name Type Required Restrictions Description
id string true none attribute rule ID
op string true none attribute rule operator
value string true none attribute rule value

AttributeRuleRequest

{
  "id": "string",
  "op": "string",
  "value": "string"
}

Properties

Name Type Required Restrictions Description
id string true none attribute`s template name
op string false none operator
value string true none attribute`s value

AttributeTemplateDetailsResponse

{
  "id": "string",
  "description": "string",
  "type": "string",
  "range": {
    "min": "string",
    "max": "string"
  }
}

Properties

Name Type Required Restrictions Description
id string true none attribute template ID
description string false none Attribute template description
type string true none attribute template type
range Range false none none

AttributeTemplateGroup

{
  "id": "string",
  "attributeTemplates": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
id string false none none
attributeTemplates [string] false none none

AttributeTemplateGroupDetails

{
  "id": "string",
  "description": "string",
  "attributeTemplates": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
id string false none none
description string false none none
attributeTemplates [string] false none none

AttributeTemplateGroupSummary

{
  "id": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
description string false none none

BackupData

{
  "vaultId": "string",
  "backupData": "string",
  "bipLevel": 0,
  "cpar": "string",
  "parentFingerprint": "string",
  "childNumber": 0,
  "publicKey": "string"
}

Properties

Name Type Required Restrictions Description
vaultId string true none the vault ID
backupData string true none The backup data, in encrypted form
bipLevel integer(int32) true none derivation level
cpar string true none CPar
parentFingerprint string true none parent fingerprint
childNumber integer(int32) true none child number
publicKey string false none none

Bip44AccountIndex

{
  "index": 0
}

Properties

Name Type Required Restrictions Description
index integer(int32) true none The account index

Bip44AccountResponse

{
  "publicKeys": [
    "string"
  ],
  "chains": [
    "string"
  ],
  "accountName": "string",
  "accountIndex": 0
}

Properties

Name Type Required Restrictions Description
publicKeys [string] true none the public keys
chains [string] true none chains
accountName string false none the account's name
accountIndex integer(int32) true none the account's index

Bip44AccountsResponse

{
  "name": "string",
  "index": 0
}

Properties

Name Type Required Restrictions Description
name string false none an optional account name
index integer(int32) true none the account's index

BipPublicNode

{
  "chainCode": "string",
  "publicKey": "string",
  "level": 0,
  "parentFingerprint": "string",
  "childNumber": 0
}

Properties

Name Type Required Restrictions Description
chainCode string false none none
publicKey string false none none
level integer(int32) false none none
parentFingerprint string false none none
childNumber integer(int32) false none none

CASPErrorResponse

{
  "type": "string",
  "title": "string",
  "details": "string",
  "status": 0
}

Properties

Name Type Required Restrictions Description
type string true none Error identification
title string true none Error summary
details string true none Error details
status integer(int32) true none Original HTTP status code

CalculatePublicKeyOperationDetails

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "policyDetails": {
    "id": "string",
    "name": "string"
  },
  "vaultName": "string",
  "totsParams": [
    {
      "index": 0,
      "numberOfFragments": 0
    }
  ],
  "publicKeys": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID
kind string true none Operation kind
status string true none Operation status.

The status field has the following possible values:
- PENDING - waiting for participant approval.
- PENDING_ACTIVATION - used for rejoining a quorum vault operation.
- WAITING_DATA_COLLECTION - waiting for data collector data.

The sign operation finishes with one of these status values:
- CANCELED - user canceled the operation.
- FAILED - set by a wallet if, for example, the wallet's call to the ledger failed. Also set if the CASP service was not able to sign any of the provided hashes.
- ERROR - the CASP server encountered an internal error.
- COMPLETED
- When working without built-in Wallet - enough participants approved and CASP has the signature.
- When working with built-in Wallet - the wallet successfully sent the signed transaction to the ledger.
- REJECTED - a participant rejected the operation, a rejection policy was selected when CASP was processing policies, or no policy was selected when CASP was processing policies.
statusText string true none Operation status text
createdAt string true none Operation creation time
vaultID string true none Vault ID
description string false none Description of the operation
isApproved boolean true none Approval state for the operation
accountID string true none Account ID for the operation
groups [ApprovalGroupDetails] true none Operation approval groups
policyDetails PolicyDetails false none none
vaultName string true none Item name for the operation
totsParams [IndexNofPairResponse] true none List of index/NOF pairs
publicKeys [string] true none List of public keys

Enumerated Values

Property Value
kind JOIN_VAULT
kind REJOIN_VAULT
kind JOIN_VAULT_ADMIN_QUORUM
kind JOIN_POLICY_VAULT
kind ADD_MEMBER
kind ADMIN_QUORUM_APPROVAL
kind QUORUM_SIGN
kind CALCULATE_PUBLIC_KEY
kind UPDATE_VAULT_ATTRIBUTES
kind ERROR
status PENDING
status WAITING_DATA_COLLECTION
status PENDING_ACTIVATION
status APPROVED
status COMPLETED
status REJECTED
status CANCELED
status FAILED
status ERROR
statusText Pending
statusText Pending activation
statusText Approved
statusText Completed
statusText Rejected
statusText Canceled
statusText Failed
statusText N/A

CalculatePublicKeyRequest

{
  "description": "string",
  "totsParams": [
    {
      "index": 0,
      "numberOfFragments": 1
    }
  ]
}

Properties

Name Type Required Restrictions Description
description string false none Description.
totsParams [IndexNofPairRequest] false none Index and NOF pairs

ChangeUserPasswordRequest

{
  "value": "string"
}

Properties

Name Type Required Restrictions Description
value string true none User's password

CollectedDataDetails

{
  "dataCollectorDetails": {
    "id": "string",
    "name": "string",
    "state": "string",
    "description": "string",
    "activationCode": "string",
    "attributeTemplateGroup": {
      "id": "string",
      "attributeTemplates": [
        "string"
      ]
    },
    "creationTime": "string",
    "modificationTime": "string",
    "authenticationKey": "string"
  },
  "data": {
    "property1": "string",
    "property2": "string"
  },
  "collectionDone": true,
  "signedUniqueData": "string",
  "collectionStart": 0,
  "collectionEnd": 0
}

Properties

Name Type Required Restrictions Description
dataCollectorDetails DataCollectorDetails false none none
data object false none none
» additionalProperties string false none none
collectionDone boolean false none none
signedUniqueData string false none none
collectionStart integer(int64) false none none
collectionEnd integer(int64) false none none

CollectedDataGroupDetails

{
  "minimumRequired": 0,
  "collectedData": [
    {
      "dataCollectorDetails": {
        "id": "string",
        "name": "string",
        "state": "string",
        "description": "string",
        "activationCode": "string",
        "attributeTemplateGroup": {
          "id": "string",
          "attributeTemplates": [
            "string"
          ]
        },
        "creationTime": "string",
        "modificationTime": "string",
        "authenticationKey": "string"
      },
      "data": {
        "property1": "string",
        "property2": "string"
      },
      "collectionDone": true,
      "signedUniqueData": "string",
      "collectionStart": 0,
      "collectionEnd": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
minimumRequired integer(int32) false none none
collectedData [CollectedDataDetails] false none none

CollectedDataGroupsDetails

{
  "collectionComplete": true,
  "dataCollectionGroups": [
    {
      "minimumRequired": 0,
      "collectedData": [
        {
          "dataCollectorDetails": {
            "id": "string",
            "name": "string",
            "state": "string",
            "description": "string",
            "activationCode": "string",
            "attributeTemplateGroup": {
              "id": "string",
              "attributeTemplates": [
                "string"
              ]
            },
            "creationTime": "string",
            "modificationTime": "string",
            "authenticationKey": "string"
          },
          "data": {
            "property1": "string",
            "property2": "string"
          },
          "collectionDone": true,
          "signedUniqueData": "string",
          "collectionStart": 0,
          "collectionEnd": 0
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
collectionComplete boolean false none none
dataCollectionGroups [CollectedDataGroupDetails] false none none

CreateAccountRequest

{
  "name": "string",
  "isGlobal": true
}

Properties

Name Type Required Restrictions Description
name string true none Account name
isGlobal boolean false none Is account global

CreateApiKeyRequest

{
  "client_id": "string",
  "client_role": "Super_User",
  "scope": "string",
  "grant_type": "client_credentials",
  "password": "string"
}

Properties

Name Type Required Restrictions Description
client_id string true none Owner client ID auth token will be issued for
client_role string true none Auth token owner role.
scope string true none Auth token scope. Value MUST be set to "/mng"
grant_type string true none Request's grant type
password string true none Auth token owner password

Enumerated Values

Property Value
client_role Super_User
client_role Security_Officer
client_role Trader
grant_type client_credentials

CreateAttributeTemplateGroupRequest

{
  "id": "string",
  "attributeTemplates": [
    "string"
  ],
  "description": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
attributeTemplates [string] false none none
description string false none none

CreateAttributeTemplateRequest

{
  "id": "string",
  "description": "string",
  "type": "STRING",
  "range": {
    "min": "string",
    "max": "string"
  }
}

Properties

Name Type Required Restrictions Description
id string true none Vault attribute ID
description string false none Vault attribute description
type string true none Vault attribute Type
range Range false none none

Enumerated Values

Property Value
type STRING
type NUMERIC
type BOOLEAN
type DATE

CreateBip44AddressResponse

{
  "publicKey": "string",
  "derivationString": "string"
}

Properties

Name Type Required Restrictions Description
publicKey string true none The public key of the new address
derivationString string true none The derivation string of the new address

CreateDataCollectorRequest

{
  "name": "string",
  "attributeTemplateGroupId": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
name string false none none
attributeTemplateGroupId string false none none
description string false none none

CreateParticipantRequest

{
  "name": "string",
  "email": "string",
  "role": "string",
  "offline": true
}

Properties

Name Type Required Restrictions Description
name string true none Participant name
email string true none Participant email
role string false none Participant role
offline boolean false none An offline participant

CreateUserRequest

{
  "name": "string",
  "loginName": "string",
  "password": "string",
  "role": "Super_User",
  "enable2fa": true,
  "authType": "OIDC",
  "accountId": "string",
  "email": "string"
}

Properties

Name Type Required Restrictions Description
name string false none User's name
loginName string true none User's login name
password string false none User's password. Not needed when using using OAuth type 'OIDC'
role string true none User's role
enable2fa boolean false none Is 2FA enabled for this user
authType string false none Oauth type
accountId string false none User's account id. Needed only when creating a participant
email string false none User's email. needed only when creating a participant

Enumerated Values

Property Value
role Super_User
role Security_Officer
role Trader
authType OIDC
authType OAUTH

CreateVaultDataResponse

{
  "id": "string",
  "name": "string",
  "description": "string",
  "accountID": "string"
}

Properties

Name Type Required Restrictions Description
id string true none Vault ID
name string true none Vault name
description string true none Vault description
accountID string true none Vault account ID

CreateVaultRequest

{
  "name": "string",
  "description": "string",
  "cryptoKind": "ECDSA",
  "curveName": "Ed25519",
  "providerKind": "string",
  "hierarchy": "NONE",
  "coinType": 0,
  "firstAccountName": "string",
  "groups": [
    {
      "name": "string",
      "requiredApprovals": 1,
      "members": [
        {
          "id": "string"
        }
      ],
      "isOffline": true
    }
  ],
  "policies": [
    {
      "name": "string",
      "description": "string",
      "enabled": true,
      "isOffline": true,
      "timeZone": "string",
      "groups": [
        {
          "name": "string",
          "requiredApprovals": 1,
          "members": [
            {
              "id": "string"
            }
          ],
          "isOffline": true
        }
      ],
      "rules": {
        "weeklyTimeSlots": [
          {
            "days": "string",
            "timeStart": "string",
            "timeEnd": "string"
          }
        ],
        "amountRange": {
          "property1": {
            "minimum": 0,
            "maximum": 0
          },
          "property2": {
            "minimum": 0,
            "maximum": 0
          }
        },
        "whiteList": [
          "string"
        ],
        "derivedWhitelist": [
          {
            "chainCode": "string",
            "publicKey": "string",
            "level": 0,
            "parentFingerprint": "string",
            "childNumber": 0
          }
        ],
        "attributes": [
          {
            "id": "string",
            "op": "string",
            "value": "string"
          }
        ]
      },
      "policyKind": "APPROVAL"
    }
  ],
  "isOffline": true,
  "attributes": {
    "property1": "string",
    "property2": "string"
  },
  "dataCollectorsGroups": [
    {
      "name": "string",
      "attributeTemplateGroup": "string",
      "ids": [
        "string"
      ],
      "minimumRequired": 1
    }
  ]
}

Properties

Name Type Required Restrictions Description
name string true none Vault name
description string false none vault description
cryptoKind string true none Type of cryptographic algorithm
curveName string false none The name of the curve
providerKind string false none Type of crypto currency
hierarchy string false none Vault hierarchy. defaults to deterministic
coinType integer(int32) false none BIP44 coin type. see examples of known coin types in https://github.com/satoshilabs/slips/blob/master/slip-0044.md
firstAccountName string false none The name of the first account
groups [ApprovalGroup] true none Vault approval groups
policies [WithdrawalPolicy] false none policies set
isOffline boolean false none Offline/Online type of the vault
attributes object false none Vault attributes
» additionalProperties string false none none
dataCollectorsGroups [DataCollectorsGroupDetails] false none Vault data collector groups

Enumerated Values

Property Value
cryptoKind ECDSA
cryptoKind EDDSA
cryptoKind TOTS
curveName Ed25519
curveName secp256r1
curveName secp256k1
hierarchy NONE
hierarchy BIP32
hierarchy BIP44

DBEntity

{
  "healthy": true,
  "errorMessage": "string",
  "version": "string",
  "schemaVersion": "string"
}

Properties

Name Type Required Restrictions Description
healthy boolean true none Is entity healthy
errorMessage string false none Error message in case entity is not healthy
version string false none Entity version
schemaVersion string false none CASP schema version

DataCollectorDetails

{
  "id": "string",
  "name": "string",
  "state": "string",
  "description": "string",
  "activationCode": "string",
  "attributeTemplateGroup": {
    "id": "string",
    "attributeTemplates": [
      "string"
    ]
  },
  "creationTime": "string",
  "modificationTime": "string",
  "authenticationKey": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
state string false none none
description string false none none
activationCode string false none none
attributeTemplateGroup AttributeTemplateGroup false none none
creationTime string false none none
modificationTime string false none none
authenticationKey string false none none

DataCollectorSummary

{
  "id": "string",
  "name": "string",
  "attributeTemplateGroupId": "string",
  "state": "string",
  "description": "string",
  "creationTime": "string",
  "modificationTime": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
attributeTemplateGroupId string false none none
state string false none none
description string false none none
creationTime string false none none
modificationTime string false none none

DataCollectorsGroupDetails

{
  "name": "string",
  "attributeTemplateGroup": "string",
  "ids": [
    "string"
  ],
  "minimumRequired": 1
}

Properties

Name Type Required Restrictions Description
name string true none Data Collectors group name
attributeTemplateGroup string true none Data collectors group`s attribute template group name
ids [string] true none Data Collectors IDs
minimumRequired integer(int32) true none Data Collectors required for Sign request proceeding

DecliningParticipantDetails

{
  "participantId": "string",
  "participantName": "string"
}

Properties

Name Type Required Restrictions Description
participantId string true none Sign operation declining participant ID
participantName string false none none

DeriveBip32KeypairRequest

{
  "pathToDeriveFrom": "string",
  "hardDerivation": true,
  "childIndex": 0
}

Properties

Name Type Required Restrictions Description
pathToDeriveFrom string true none The derivation path to derive from
hardDerivation boolean true none Use hard derivation
childIndex integer(int32) true none The child index

DerivedWhiteList

{
  "chainCode": "string",
  "publicKey": "string",
  "level": 0,
  "parentFingerprint": "string",
  "childNumber": 0
}

Properties

Name Type Required Restrictions Description
chainCode string false none none
publicKey string false none none
level integer(int32) true none none
parentFingerprint string false none none
childNumber integer(int32) true none none

EditTrustedInstaceRequest

{
  "instanceId": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
instanceId string true none Instance ID
description string false none Instance description

Entity

{
  "healthy": true,
  "errorMessage": "string",
  "version": "string"
}

Properties

Name Type Required Restrictions Description
healthy boolean true none Is entity healthy
errorMessage string false none Error message in case entity is not healthy
version string false none Entity version

ExportedEntity

{
  "instanceId": "string",
  "type": "string",
  "data": "string",
  "signature": "string"
}

Properties

Name Type Required Restrictions Description
instanceId string false none none
type string false none none
data string false none none
signature string false none none

GetBip32KeyResponse

{
  "derivationPath": "string",
  "publicKey": "string"
}

Properties

Name Type Required Restrictions Description
derivationPath string true none the public derivation path
publicKey string true none the public key

GetBip44AccountByIdentifierResponse

{
  "accountName": "string",
  "accountIndex": 0
}

Properties

Name Type Required Restrictions Description
accountName string false none the account's name
accountIndex integer(int32) true none the account's index

Idp

{
  "name": "string",
  "description": "string",
  "url": "string",
  "clientId": "string",
  "usedClaims": [
    "string"
  ],
  "requiredScopes": [
    "string"
  ],
  "tokenEndpoint": "string",
  "authorizationEndpoint": "string",
  "userinfoEndpoint": "string",
  "jwksUri": "string",
  "supportedClaims": [
    "string"
  ],
  "supportedScopes": [
    "string"
  ],
  "supportedResponseTypes": [
    "string"
  ],
  "supportedGrantTypes": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
name string false none none
description string false none none
url string false none none
clientId string false none none
usedClaims [string] false none none
requiredScopes [string] false none none
tokenEndpoint string false none none
authorizationEndpoint string false none none
userinfoEndpoint string false none none
jwksUri string false none none
supportedClaims [string] false none none
supportedScopes [string] false none none
supportedResponseTypes [string] false none none
supportedGrantTypes [string] false none none

IndexNofPairRequest

{
  "index": 0,
  "numberOfFragments": 1
}

Properties

Name Type Required Restrictions Description
index integer(int32) true none Index
numberOfFragments integer(int32) true none Number of fragments

Enumerated Values

Property Value
numberOfFragments 1
numberOfFragments 2
numberOfFragments 3

IndexNofPairResponse

{
  "index": 0,
  "numberOfFragments": 0
}

Properties

Name Type Required Restrictions Description
index integer(int32) true none Index
numberOfFragments integer(int32) true none Number of fragments

JoinPolicyVaultOperationDetails

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "policies": [
    {
      "name": "string",
      "id": "string",
      "description": "string",
      "enabled": true,
      "timeZone": "string",
      "groups": [
        {
          "name": "string",
          "members": [
            {
              "approvedAt": "string",
              "id": "string",
              "isApproved": true,
              "name": "string",
              "status": "STARTED",
              "approvalGroupAccount": {
                "id": "string",
                "name": "string"
              },
              "label": "string",
              "isGlobal": true,
              "isActive": true,
              "globalStatus": "ACTIVATED",
              "isOffline": true
            }
          ],
          "requiredApprovals": 0,
          "order": 0,
          "deactivateAllowed": true,
          "isOffline": true
        }
      ],
      "rules": {
        "weeklyTimeSlots": [
          {
            "days": "string",
            "timeStart": "string",
            "timeEnd": "string"
          }
        ],
        "amountRange": {
          "property1": {
            "minimum": 0,
            "maximum": 0
          },
          "property2": {
            "minimum": 0,
            "maximum": 0
          }
        },
        "whiteList": [
          "string"
        ],
        "derivedWhitelist": [
          {
            "chainCode": "string",
            "publicKey": "string",
            "level": 0,
            "parentFingerprint": "string",
            "childNumber": 0
          }
        ],
        "attributes": [
          {
            "id": "string",
            "op": "string",
            "value": "string"
          }
        ]
      }
    }
  ],
  "vaultName": "string",
  "groupNameToJoin": "string"
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID
kind string true none Operation kind
status string true none Operation status.

The status field has the following possible values:
- PENDING - waiting for participant approval.
- PENDING_ACTIVATION - used for rejoining a quorum vault operation.
- WAITING_DATA_COLLECTION - waiting for data collector data.

The sign operation finishes with one of these status values:
- CANCELED - user canceled the operation.
- FAILED - set by a wallet if, for example, the wallet's call to the ledger failed. Also set if the CASP service was not able to sign any of the provided hashes.
- ERROR - the CASP server encountered an internal error.
- COMPLETED
- When working without built-in Wallet - enough participants approved and CASP has the signature.
- When working with built-in Wallet - the wallet successfully sent the signed transaction to the ledger.
- REJECTED - a participant rejected the operation, a rejection policy was selected when CASP was processing policies, or no policy was selected when CASP was processing policies.
statusText string true none Operation status text
createdAt string true none Operation creation time
vaultID string true none Vault ID
description string false none Description of the operation
isApproved boolean true none Approval state for the operation
accountID string true none Account ID for the operation
policies [JoinPolicyVaultWithdrawalPolicy] true none Policies
vaultName string true none Vault name for the operation
groupNameToJoin string true none Group to join

Enumerated Values

Property Value
kind JOIN_VAULT
kind REJOIN_VAULT
kind JOIN_VAULT_ADMIN_QUORUM
kind JOIN_POLICY_VAULT
kind ADD_MEMBER
kind ADMIN_QUORUM_APPROVAL
kind QUORUM_SIGN
kind CALCULATE_PUBLIC_KEY
kind UPDATE_VAULT_ATTRIBUTES
kind ERROR
status PENDING
status WAITING_DATA_COLLECTION
status PENDING_ACTIVATION
status APPROVED
status COMPLETED
status REJECTED
status CANCELED
status FAILED
status ERROR
statusText Pending
statusText Pending activation
statusText Approved
statusText Completed
statusText Rejected
statusText Canceled
statusText Failed
statusText N/A

JoinPolicyVaultWithdrawalPolicy

{
  "name": "string",
  "id": "string",
  "description": "string",
  "enabled": true,
  "timeZone": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "rules": {
    "weeklyTimeSlots": [
      {
        "days": "string",
        "timeStart": "string",
        "timeEnd": "string"
      }
    ],
    "amountRange": {
      "property1": {
        "minimum": 0,
        "maximum": 0
      },
      "property2": {
        "minimum": 0,
        "maximum": 0
      }
    },
    "whiteList": [
      "string"
    ],
    "derivedWhitelist": [
      {
        "chainCode": "string",
        "publicKey": "string",
        "level": 0,
        "parentFingerprint": "string",
        "childNumber": 0
      }
    ],
    "attributes": [
      {
        "id": "string",
        "op": "string",
        "value": "string"
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
name string true none policy name
id string true none policy id
description string false none Policy description
enabled boolean false none is the policy enabled, default is TRUE
timeZone string false none Policy time zone
groups [ApprovalGroupDetails] true none Approval groups
rules Rules false none none

KeySpecResponse

{
  "indexNofPairs": [
    {
      "index": 0,
      "numberOfFragments": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
indexNofPairs [IndexNofPairResponse] false none none

KeySpecsRequest

{
  "totsParams": [
    {
      "index": 0,
      "numberOfFragments": 1
    }
  ]
}

Properties

Name Type Required Restrictions Description
totsParams [IndexNofPairRequest] false none none

ListAccountsResponse

{
  "totalItems": 0,
  "items": [
    {
      "id": "string",
      "name": "string",
      "isGlobal": true,
      "isDeletable": true,
      "creationTime": "string",
      "stats": {
        "participants": {
          "total": 0,
          "inactive": 0
        },
        "operations": {
          "total": 0,
          "pending": 0
        },
        "vaults": {
          "total": 0,
          "inactive": 0,
          "pending": 0
        }
      }
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [AccountDetails] true none Items

ListAttributeTemplateGroupsSummaries

{
  "totalItems": 0,
  "items": [
    {
      "id": "string",
      "description": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) false none none
items [AttributeTemplateGroupSummary] false none none

ListAttributeTemplatesResponse

{
  "totalItems": 0,
  "items": [
    {
      "id": "string",
      "description": "string",
      "type": "string",
      "range": {
        "min": "string",
        "max": "string"
      }
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [AttributeTemplateDetailsResponse] true none Items

ListDataCollectorSummaries

{
  "items": [
    {
      "id": "string",
      "name": "string",
      "attributeTemplateGroupId": "string",
      "state": "string",
      "description": "string",
      "creationTime": "string",
      "modificationTime": "string"
    }
  ],
  "totalItems": 0
}

Properties

Name Type Required Restrictions Description
items [DataCollectorSummary] false none none
totalItems integer(int32) false none none

ListResponseBip32Keys

{
  "totalItems": 0,
  "items": [
    {
      "derivationPath": "string",
      "publicKey": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [GetBip32KeyResponse] true none Items

ListResponseBip44Accounts

{
  "totalItems": 0,
  "items": [
    {
      "name": "string",
      "index": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [Bip44AccountsResponse] true none Items

ListResponseBip44ChainAddresses

{
  "totalItems": 0,
  "items": [
    "string"
  ],
  "chains": [
    "string"
  ],
  "accountName": "string",
  "accountIndex": 0
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [string] true none Public key items
chains [string] true none chains
accountName string false none the account's name
accountIndex integer(int32) true none the account's index

ListResponseBip44Coins

{
  "totalItems": 0,
  "items": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [integer] true none Items

ListResponseOperations

{
  "totalItems": 0,
  "items": [
    {
      "operationID": "string",
      "kind": "JOIN_VAULT",
      "status": "PENDING",
      "statusText": "Pending",
      "createdAt": "string",
      "vaultID": "string",
      "description": "string",
      "isApproved": true,
      "accountID": "string",
      "vaultName": "string",
      "providerKind": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [OperationViewInfo] true none Items

ListResponseOperationsInfo

{
  "totalItems": 0,
  "items": [
    {
      "operationID": "string",
      "kind": "JOIN_VAULT",
      "status": "PENDING",
      "statusText": "Pending",
      "createdAt": "string",
      "vaultID": "string",
      "description": "string",
      "isApproved": true,
      "accountID": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [OperationInfo] true none Items

ListResponseParticipants

{
  "totalItems": 0,
  "items": [
    {
      "id": "string",
      "accountID": "string",
      "name": "string",
      "email": "string",
      "status": "NOT_ACTIVATED",
      "isActive": true,
      "accountName": "string",
      "role": "string",
      "pushEnabled": true,
      "offline": true,
      "activeOperations": 0,
      "deviceType": "IOS",
      "creationTime": "string",
      "modificationTime": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [ParticipantDetails] true none Items

ListResponseVaults

{
  "totalItems": 0,
  "items": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "cryptoKind": "ECDSA",
      "providerKind": "string",
      "isActive": true,
      "status": "NOT_INITIALIZED",
      "statusText": "Waiting for participants to join",
      "providerData": "string",
      "pendingOperations": 0,
      "hierarchy": "NONE",
      "isDeletable": true,
      "approvalStructure": "QUORUM",
      "creationTime": "string",
      "modificationTime": "string",
      "offline": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [VaultInfo] true none Items

OAuthTokenRequest

{
  "grant_type": "password",
  "username": "string",
  "code": "string",
  "redirect_uri": "string",
  "client_id": "string",
  "password": "string",
  "refresh_token": "string",
  "id_token": "string"
}

Properties

Name Type Required Restrictions Description
grant_type string true none Request's grant type
username string false none none
code string false none used for OIDC
redirect_uri string false none used for OIDC
client_id string false none none
password string false none password
refresh_token string false none refresh token
id_token string false none used for OIDC

Enumerated Values

Property Value
grant_type password
grant_type id_token
grant_type authorization_code
grant_type refresh_token

OauthTokenResponse

{
  "access_token": "string",
  "token_type": "string",
  "expires_in": 0,
  "scope": "string"
}

Properties

Name Type Required Restrictions Description
access_token string true none Oauth Token for CASP service
token_type string false none Oauth Token type
expires_in integer(int64) false none Expiration in seconds
scope string false none Oauth token scope

OauthTokenWithRefreshResponse

{
  "access_token": "string",
  "token_type": "string",
  "expires_in": 0,
  "scope": "string",
  "refresh_token": "string"
}

Properties

Name Type Required Restrictions Description
access_token string true none Oauth Token for CASP service
token_type string false none Oauth Token type
expires_in integer(int64) false none Expiration in seconds
scope string false none Oauth token scope
refresh_token string true none Oauth Token for CASP service

OfflineParticipantsOperationsResponse

{
  "data": "string",
  "tag": "string",
  "iv": "string",
  "key": "string",
  "participantId": "string",
  "sig": "string"
}

Properties

Name Type Required Restrictions Description
data string true none Participant ID
tag string false none none
iv string false none none
key string false none none
participantId string false none none
sig string true none Participant ID

OperationDetails

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "policyDetails": {
    "id": "string",
    "name": "string"
  },
  "vaultName": "string"
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID
kind string true none Operation kind
status string true none Operation status.

The status field has the following possible values:
- PENDING - waiting for participant approval.
- PENDING_ACTIVATION - used for rejoining a quorum vault operation.
- WAITING_DATA_COLLECTION - waiting for data collector data.

The sign operation finishes with one of these status values:
- CANCELED - user canceled the operation.
- FAILED - set by a wallet if, for example, the wallet's call to the ledger failed. Also set if the CASP service was not able to sign any of the provided hashes.
- ERROR - the CASP server encountered an internal error.
- COMPLETED
- When working without built-in Wallet - enough participants approved and CASP has the signature.
- When working with built-in Wallet - the wallet successfully sent the signed transaction to the ledger.
- REJECTED - a participant rejected the operation, a rejection policy was selected when CASP was processing policies, or no policy was selected when CASP was processing policies.
statusText string true none Operation status text
createdAt string true none Operation creation time
vaultID string true none Vault ID
description string false none Description of the operation
isApproved boolean true none Approval state for the operation
accountID string true none Account ID for the operation
groups [ApprovalGroupDetails] true none Operation approval groups
policyDetails PolicyDetails false none none
vaultName string true none Item name for the operation

Enumerated Values

Property Value
kind JOIN_VAULT
kind REJOIN_VAULT
kind JOIN_VAULT_ADMIN_QUORUM
kind JOIN_POLICY_VAULT
kind ADD_MEMBER
kind ADMIN_QUORUM_APPROVAL
kind QUORUM_SIGN
kind CALCULATE_PUBLIC_KEY
kind UPDATE_VAULT_ATTRIBUTES
kind ERROR
status PENDING
status WAITING_DATA_COLLECTION
status PENDING_ACTIVATION
status APPROVED
status COMPLETED
status REJECTED
status CANCELED
status FAILED
status ERROR
statusText Pending
statusText Pending activation
statusText Approved
statusText Completed
statusText Rejected
statusText Canceled
statusText Failed
statusText N/A

OperationInfo

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string"
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID
kind string true none Operation kind
status string true none Operation status.

The status field has the following possible values:
- PENDING - waiting for participant approval.
- PENDING_ACTIVATION - used for rejoining a quorum vault operation.
- WAITING_DATA_COLLECTION - waiting for data collector data.

The sign operation finishes with one of these status values:
- CANCELED - user canceled the operation.
- FAILED - set by a wallet if, for example, the wallet's call to the ledger failed. Also set if the CASP service was not able to sign any of the provided hashes.
- ERROR - the CASP server encountered an internal error.
- COMPLETED
- When working without built-in Wallet - enough participants approved and CASP has the signature.
- When working with built-in Wallet - the wallet successfully sent the signed transaction to the ledger.
- REJECTED - a participant rejected the operation, a rejection policy was selected when CASP was processing policies, or no policy was selected when CASP was processing policies.
statusText string true none Operation status text
createdAt string true none Operation creation time
vaultID string true none Vault ID
description string false none Description of the operation
isApproved boolean true none Approval state for the operation
accountID string true none Account ID for the operation

Enumerated Values

Property Value
kind JOIN_VAULT
kind REJOIN_VAULT
kind JOIN_VAULT_ADMIN_QUORUM
kind JOIN_POLICY_VAULT
kind ADD_MEMBER
kind ADMIN_QUORUM_APPROVAL
kind QUORUM_SIGN
kind CALCULATE_PUBLIC_KEY
kind UPDATE_VAULT_ATTRIBUTES
kind ERROR
status PENDING
status WAITING_DATA_COLLECTION
status PENDING_ACTIVATION
status APPROVED
status COMPLETED
status REJECTED
status CANCELED
status FAILED
status ERROR
statusText Pending
statusText Pending activation
statusText Approved
statusText Completed
statusText Rejected
statusText Canceled
statusText Failed
statusText N/A

OperationResponse

{
  "operationID": "string"
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID

OperationViewInfo

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "vaultName": "string",
  "providerKind": "string"
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID
kind string true none Operation kind
status string true none Operation status.

The status field has the following possible values:
- PENDING - waiting for participant approval.
- PENDING_ACTIVATION - used for rejoining a quorum vault operation.
- WAITING_DATA_COLLECTION - waiting for data collector data.

The sign operation finishes with one of these status values:
- CANCELED - user canceled the operation.
- FAILED - set by a wallet if, for example, the wallet's call to the ledger failed. Also set if the CASP service was not able to sign any of the provided hashes.
- ERROR - the CASP server encountered an internal error.
- COMPLETED
- When working without built-in Wallet - enough participants approved and CASP has the signature.
- When working with built-in Wallet - the wallet successfully sent the signed transaction to the ledger.
- REJECTED - a participant rejected the operation, a rejection policy was selected when CASP was processing policies, or no policy was selected when CASP was processing policies.
statusText string true none Operation status text
createdAt string true none Operation creation time
vaultID string true none Vault ID
description string false none Description of the operation
isApproved boolean true none Approval state for the operation
accountID string true none Account ID for the operation
vaultName string true none Vault Name
providerKind string false none Provider Kind

Enumerated Values

Property Value
kind JOIN_VAULT
kind REJOIN_VAULT
kind JOIN_VAULT_ADMIN_QUORUM
kind JOIN_POLICY_VAULT
kind ADD_MEMBER
kind ADMIN_QUORUM_APPROVAL
kind QUORUM_SIGN
kind CALCULATE_PUBLIC_KEY
kind UPDATE_VAULT_ATTRIBUTES
kind ERROR
status PENDING
status WAITING_DATA_COLLECTION
status PENDING_ACTIVATION
status APPROVED
status COMPLETED
status REJECTED
status CANCELED
status FAILED
status ERROR
statusText Pending
statusText Pending activation
statusText Approved
statusText Completed
statusText Rejected
statusText Canceled
statusText Failed
statusText N/A

Operations

{
  "total": 0,
  "pending": 0
}

Properties

Name Type Required Restrictions Description
total integer(int32) true none The number of operations from the account
pending integer(int32) true none The number of operations that are still pending

ParticipantDetails

{
  "id": "string",
  "accountID": "string",
  "name": "string",
  "email": "string",
  "status": "NOT_ACTIVATED",
  "isActive": true,
  "accountName": "string",
  "role": "string",
  "pushEnabled": true,
  "offline": true,
  "activeOperations": 0,
  "deviceType": "IOS",
  "creationTime": "string",
  "modificationTime": "string"
}

Properties

Name Type Required Restrictions Description
id string true none Participant ID
accountID string true none Participant account ID
name string true none Participant name
email string true none Participant email
status string true none Participant status
isActive boolean true none Participant activation state
accountName string true none Participant account name
role string false none Participant role
pushEnabled boolean true none Is the push notifications enabled for this participant
offline boolean true none Participant is offline
activeOperations integer(int64) true none Participant is offline
deviceType string false none Participant device type
creationTime string true none Participant creation time
modificationTime string true none Participant last modification time

Enumerated Values

Property Value
status NOT_ACTIVATED
status ACTIVATED
status REACTIVATING
status SUSPENDED
status REVOKED
deviceType IOS
deviceType ANDROID
deviceType BOT

ParticipantGroupResponse

{
  "vaultId": "string",
  "vaultName": "string",
  "type": "string",
  "policy": "string",
  "policyId": "string",
  "name": "string",
  "requiredApprovals": 0,
  "totalMembersCount": 0,
  "activeMembersCount": 0,
  "status": "string"
}

Properties

Name Type Required Restrictions Description
vaultId string true none Vault ID
vaultName string true none Vault name
type string true none Group type
policy string false none Policy name
policyId string false none Policy Id
name string true none Group name
requiredApprovals integer(int32) true none Number of group required approvals
totalMembersCount integer(int32) true none Number of group participants
activeMembersCount integer(int32) true none Number of active participants in group
status string false none Participant status on group (only for suspended and revoked statuses)

ParticipantInfo

{
  "id": "string",
  "name": "string",
  "email": "string",
  "role": "string",
  "accountID": "string",
  "accountName": "string",
  "status": "NOT_ACTIVATED",
  "loginName": "string",
  "responseSignKey": "string",
  "creationTime": "string",
  "modificationTime": "string",
  "lastLoginTime": "string",
  "admin": true,
  "approver": true
}

Properties

Name Type Required Restrictions Description
id string true none Participant ID
name string true none Participant name
email string true none Participant email
role string true none Participant role
accountID string true none Participant account ID
accountName string true none Participant account alias
status string true none Participant status
loginName string false none User login name
responseSignKey string true none Transaction sign key for transaction verifications
creationTime string true none Participant creation time
modificationTime string true none Participant last modification time
lastLoginTime string false none User last login time
admin boolean false none Participant has authentication capabilities
approver boolean false none Participant has approver capabilities

Enumerated Values

Property Value
status NOT_ACTIVATED
status ACTIVATED
status REACTIVATING
status SUSPENDED
status REVOKED

ParticipantStatusChangeResponse

{
  "id": "string",
  "name": "string",
  "status": "ACTIVATED",
  "approvalGroupAccount": {
    "id": "string",
    "name": "string"
  },
  "label": "string",
  "isGlobal": true,
  "isActive": true
}

Properties

Name Type Required Restrictions Description
id string true none ParticipantWithVault ID
name string true none ParticipantWithVault name
status string true none ParticipantWithVault task status
approvalGroupAccount ApprovalGroupAccount true none none
label string true none ParticipantWithVault label
isGlobal boolean true none ParticipantWithVault global state
isActive boolean true none none

Enumerated Values

Property Value
status ACTIVATED
status SUSPENDED
status REVOKED

Participants

{
  "total": 0,
  "inactive": 0
}

Properties

Name Type Required Restrictions Description
total integer(int32) true none Total number of participants in the account
inactive integer(int32) true none Total number of inactive participants in the account

PolicyDetails

{
  "id": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id string true none Policy id
name string true none Policy name

PolicyUpdateDetails

{
  "name": "string",
  "id": "string",
  "description": "string",
  "enabled": true,
  "timeZone": "string",
  "rules": {
    "weeklyTimeSlots": [
      {
        "days": "string",
        "timeStart": "string",
        "timeEnd": "string"
      }
    ],
    "amountRange": {
      "property1": {
        "minimum": 0,
        "maximum": 0
      },
      "property2": {
        "minimum": 0,
        "maximum": 0
      }
    },
    "whiteList": [
      "string"
    ],
    "derivedWhitelist": [
      {
        "chainCode": "string",
        "publicKey": "string",
        "level": 0,
        "parentFingerprint": "string",
        "childNumber": 0
      }
    ],
    "attributes": [
      {
        "id": "string",
        "op": "string",
        "value": "string"
      }
    ]
  },
  "isOffline": true
}

Properties

Name Type Required Restrictions Description
name string true none policy name
id string true none none
description string false none Policy description
enabled boolean false none is the policy enabled, default is TRUE
timeZone string false none Policy time zone, default is UTC
rules Rules false none none
isOffline boolean false none Policy offline property

Range

{
  "min": "string",
  "max": "string"
}

Properties

Name Type Required Restrictions Description
min string true none min value
max string true none max value

RegenerateActivationCodeRequest

{
  "vaults": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
vaults [string] false none List of vaultIds to trigger 'rejoin' operation

RegenerateDataCollectorActivationCodeResponse

{
  "activationCode": "string"
}

Properties

Name Type Required Restrictions Description
activationCode string false none none

RejectionCauseDetailsResponse

{
  "text": "string",
  "reason": "string",
  "decliningParticipant": {
    "participantId": "string",
    "participantName": "string"
  },
  "rejectedPolicy": {
    "policyName": "string",
    "policyId": "string"
  }
}

Properties

Name Type Required Restrictions Description
text string false none none
reason string false none none
decliningParticipant DecliningParticipantDetails false none none
rejectedPolicy RejectionPolicyDetails false none none

RejectionPolicyDetails

{
  "policyName": "string",
  "policyId": "string"
}

Properties

Name Type Required Restrictions Description
policyName string true none Sign operation rejection policy name
policyId string false none none

RejoinVaultErrorResponse

{
  "vaultId": "string",
  "vaultName": "string",
  "error": "string"
}

Properties

Name Type Required Restrictions Description
vaultId string true none Vault ID
vaultName string true none Vault Name
error string true none Rejoin error

RestoreUserPasswordRequest

{
  "password": "string",
  "mustChangePassword": true
}

Properties

Name Type Required Restrictions Description
password string true none User's password
mustChangePassword boolean false none User must change password. default value: true

Rules

{
  "weeklyTimeSlots": [
    {
      "days": "string",
      "timeStart": "string",
      "timeEnd": "string"
    }
  ],
  "amountRange": {
    "property1": {
      "minimum": 0,
      "maximum": 0
    },
    "property2": {
      "minimum": 0,
      "maximum": 0
    }
  },
  "whiteList": [
    "string"
  ],
  "derivedWhitelist": [
    {
      "chainCode": "string",
      "publicKey": "string",
      "level": 0,
      "parentFingerprint": "string",
      "childNumber": 0
    }
  ],
  "attributes": [
    {
      "id": "string",
      "op": "string",
      "value": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
weeklyTimeSlots [ValidTimeSlot] false none none
amountRange object false none none
» additionalProperties AmountRange false none none
whiteList [string] false none none
derivedWhitelist [BipPublicNode] false none none
attributes [AttributeRuleDetailsResponse] false none none

SignAuditItem

{
  "auditSeverity": "string",
  "event": "string",
  "initiatorId": "string",
  "initiatorName": "string",
  "timestamp": "string",
  "duration": 0,
  "error": "string",
  "details": "string",
  "accountId": "string",
  "accountName": "string",
  "version": 0,
  "participantId": "string",
  "participantName": "string",
  "rawTransaction": [
    "string"
  ],
  "amount": 0,
  "assetType": "string",
  "toAddress": [
    "string"
  ],
  "isWhitelisted": true,
  "whitelistAddress": "string",
  "description": "string",
  "policyName": "string",
  "operationID": "string",
  "dataToSign": "string",
  "publicKey": "string",
  "signature": "string",
  "keySpec": "string",
  "operationState": "string",
  "rejectionReason": "string",
  "policyID": "string",
  "dataCollectorId": "string",
  "collectedData": "string"
}

Properties

Name Type Required Restrictions Description
auditSeverity string false none none
event string false none none
initiatorId string false none none
initiatorName string false none none
timestamp string false none none
duration integer(int64) false none none
error string false none none
details string false none none
accountId string false none none
accountName string false none none
version number false none none
participantId string false none none
participantName string false none none
rawTransaction [string] false none none
amount integer false none none
assetType string false none none
toAddress [string] false none none
isWhitelisted boolean false none none
whitelistAddress string false none none
description string false none none
policyName string false none none
operationID string false none none
dataToSign string false none none
publicKey string false none none
signature string false none none
keySpec string false none none
operationState string false none none
rejectionReason string false none none
policyID string false none none
dataCollectorId string false none none
collectedData string false none none

SignMetadata

{
  "operationID": "string",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "policyDetails": {
    "id": "string",
    "name": "string"
  },
  "vaultName": "string",
  "publicKeys": [
    "string"
  ],
  "dataToSign": [
    "string"
  ],
  "signatures": [
    "string"
  ],
  "v": [
    0
  ],
  "providerData": "string",
  "details": "string",
  "rawTransactions": [
    "string"
  ],
  "ledgerHashAlgorithm": "IGNORE",
  "callbackUrl": "string",
  "subAccount": 0,
  "keySpecs": {
    "indexNofPairs": [
      {
        "index": 0,
        "numberOfFragments": 0
      }
    ]
  },
  "rejectionCause": {
    "text": "string",
    "reason": "string",
    "decliningParticipant": {
      "participantId": "string",
      "participantName": "string"
    },
    "rejectedPolicy": {
      "policyName": "string",
      "policyId": "string"
    }
  },
  "collectedData": {
    "collectionComplete": true,
    "dataCollectionGroups": [
      {
        "minimumRequired": 0,
        "collectedData": [
          {
            "dataCollectorDetails": {
              "id": "string",
              "name": "string",
              "state": "string",
              "description": "string",
              "activationCode": "string",
              "attributeTemplateGroup": {
                "id": "string",
                "attributeTemplates": [
                  "string"
                ]
              },
              "creationTime": "string",
              "modificationTime": "string",
              "authenticationKey": "string"
            },
            "data": {
              "property1": "string",
              "property2": "string"
            },
            "collectionDone": true,
            "signedUniqueData": "string",
            "collectionStart": 0,
            "collectionEnd": 0
          }
        ]
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID
status string true none Operation status.

The status field has the following possible values:
- PENDING - waiting for participant approval.
- PENDING_ACTIVATION - used for rejoining a quorum vault operation.
- WAITING_DATA_COLLECTION - waiting for data collector data.

The sign operation finishes with one of these status values:
- CANCELED - user canceled the operation.
- FAILED - set by a wallet if, for example, the wallet's call to the ledger failed. Also set if the CASP service was not able to sign any of the provided hashes.
- ERROR - the CASP server encountered an internal error.
- COMPLETED
- When working without built-in Wallet - enough participants approved and CASP has the signature.
- When working with built-in Wallet - the wallet successfully sent the signed transaction to the ledger.
- REJECTED - a participant rejected the operation, a rejection policy was selected when CASP was processing policies, or no policy was selected when CASP was processing policies.
statusText string true none Operation status text
createdAt string true none Operation creation time
vaultID string true none Vault ID
description string false none Description of the operation
isApproved boolean true none Approval state for the operation
accountID string true none Account ID for the operation
groups [ApprovalGroupDetails] true none Operation approval groups
policyDetails PolicyDetails false none none
vaultName string true none Item name for the operation
publicKeys [string] true none The public keys corresponding to the private keys that will sign the data
dataToSign [string] true none List data to sign
signatures [string] false none Signatures. Each signature is 64 bytes, with 32 bytes R and 32 bytes S (in big-endian order).
v [integer] false none This parameter returns raw values 0 or 1, which can be used to recover the public key from the generated signature.
providerData string false none This is a field that can be used to store information in the CASP database. The information can subsequently be read back as needed.
details string false none This is a field that can be used to store operation information as a JSON string in the CASP database. The information can subsequently be sent to the end point for display.
rawTransactions [string] false none An array of raw transaction strings that are sent to ledger.
The strings must all have the same format, where the format of the strings depends on the ledger's hash algorithm:
- For SHA3_256, it is a hex encoded string.
- For DOUBLE_SHA256, it is a hex encoded string.
- For SHA256, it is a hex encoded string.
- For PLAIN, it is a base64 string.
- For IGNORE do not compare.
ledgerHashAlgorithm string false none Algorithm used to create data to sign
callbackUrl string false none URL to get back to task initiator
subAccount integer(int32) false none the sub account index
keySpecs KeySpecResponse false none none
rejectionCause RejectionCauseDetailsResponse false none none
collectedData CollectedDataGroupsDetails false none none

Enumerated Values

Property Value
status PENDING
status WAITING_DATA_COLLECTION
status PENDING_ACTIVATION
status APPROVED
status COMPLETED
status REJECTED
status CANCELED
status FAILED
status ERROR
statusText Pending
statusText Pending activation
statusText Approved
statusText Completed
statusText Rejected
statusText Canceled
statusText Failed
statusText N/A
ledgerHashAlgorithm IGNORE
ledgerHashAlgorithm PLAIN
ledgerHashAlgorithm SHA256
ledgerHashAlgorithm DOUBLE_SHA256
ledgerHashAlgorithm SHA3_256

SignOperationAuditItem

{
  "auditSeverity": "string",
  "event": "string",
  "initiatorId": "string",
  "initiatorName": "string",
  "timestamp": "string",
  "duration": 0,
  "error": "string",
  "details": "string",
  "accountId": "string",
  "accountName": "string",
  "version": 0,
  "participantId": "string",
  "participantName": "string",
  "operationId": "string",
  "userId": "string",
  "userName": "string",
  "operationApprovalAuditItems": "string",
  "approvedByQuorum": "string",
  "operationCanceled": "string",
  "operationDeclines": "string",
  "vaultId": "string",
  "vaultName": "string",
  "assetType": "string",
  "rawTransaction": "string",
  "amount": 0,
  "toAddress": "string",
  "whitelistAddress": "string",
  "description": "string",
  "policyName": "string",
  "whitelisted": true
}

Properties

Name Type Required Restrictions Description
auditSeverity string false none none
event string false none none
initiatorId string false none none
initiatorName string false none none
timestamp string false none none
duration integer(int64) false none none
error string false none none
details string false none none
accountId string false none none
accountName string false none none
version number false none none
participantId string false none none
participantName string false none none
operationId string false none none
userId string false none none
userName string false none none
operationApprovalAuditItems string false none none
approvedByQuorum string false none none
operationCanceled string false none none
operationDeclines string false none none
vaultId string false none none
vaultName string false none none
assetType string false none none
rawTransaction string false none none
amount integer false none none
toAddress string false none none
whitelistAddress string false none none
description string false none none
policyName string false none none
whitelisted boolean false none none

SignRequest

{
  "keySpecs": {
    "totsParams": [
      {
        "index": 0,
        "numberOfFragments": 1
      }
    ]
  },
  "dataToSign": [
    "string"
  ],
  "publicKeys": [
    "string"
  ],
  "derivationStrings": [
    "string"
  ],
  "description": "string",
  "providerData": "string",
  "details": "string",
  "callbackUrl": "string",
  "allowConcurrentKeyUsage": true,
  "rawTransactions": [
    "string"
  ],
  "ledgerHashAlgorithm": "PLAIN",
  "changeAddressDerivationString": "string",
  "decimals": [
    0
  ],
  "ledger": "string",
  "derivedWhitelistChildNumbers": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
keySpecs KeySpecsRequest false none none
dataToSign [string] true none Data to be signed (as list of Hex strings).
publicKeys [string] false none Public keys. Either publicKeys or derivationStrings must be provided.
derivationStrings [string] false none The derivation paths to sign. Either publicKeys or derivationStrings must be provided.
description string true none Description of the sign request
providerData string false none This is a field that can be used to store information in the CASP database. The information can subsequently be read back as needed.
details string false none This is a field that can be used to store operation information as a JSON string in the CASP database. The information can subsequently be sent to the end point for display.
callbackUrl string false none URL to get back to task initiator
allowConcurrentKeyUsage boolean false none Allow concurrent key usage. The default is false.

false - allows only one ongoing sign operation per key. Any new incoming sign request that specifies a key already in involved in an active sign operation is rejected.

true - allows starting multiple sign operations that specify the same key. Coordinating sign requests is something that app needs to handle. A single sign request can contain multiple hashes to sign. In a single sign request, a specific key can sign multiple hashes or multiple different keys can sign multiple hashes.
rawTransactions [string] false none An array of raw transactions ledger in the specific ledger format (as list of Hex strings).
ledgerHashAlgorithm string false none Algorithm used to calculate data to sign
changeAddressDerivationString string false none the derivation string of the change address
decimals [integer] false none Decimals of cryptocurrency units
ledger string false none The ledger on which the transaction takes place
derivedWhitelistChildNumbers [integer] false none A list of child numbers for a derived whitelist

Enumerated Values

Property Value
ledgerHashAlgorithm PLAIN
ledgerHashAlgorithm SHA256
ledgerHashAlgorithm DOUBLE_SHA256
ledgerHashAlgorithm SHA3_256
ledgerHashAlgorithm BTC_SEGWIT

SignRequestRejectedErrorResponse

{
  "type": "string",
  "title": "string",
  "details": "string",
  "status": 0,
  "rejectionCauseResponse": {
    "text": "string",
    "reason": "string",
    "decliningParticipant": {
      "participantId": "string",
      "participantName": "string"
    },
    "rejectedPolicy": {
      "policyName": "string",
      "policyId": "string"
    }
  }
}

Properties

Name Type Required Restrictions Description
type string true none Error identification
title string true none Error summary
details string true none Error details
status integer(int32) true none Original HTTP status code
rejectionCauseResponse RejectionCauseDetailsResponse true none none

SignsAuditResponse

{
  "totalItems": 0,
  "items": [
    {
      "auditSeverity": "string",
      "event": "string",
      "initiatorId": "string",
      "initiatorName": "string",
      "timestamp": "string",
      "duration": 0,
      "error": "string",
      "details": "string",
      "accountId": "string",
      "accountName": "string",
      "version": 0,
      "participantId": "string",
      "participantName": "string",
      "rawTransaction": [
        "string"
      ],
      "amount": 0,
      "assetType": "string",
      "toAddress": [
        "string"
      ],
      "isWhitelisted": true,
      "whitelistAddress": "string",
      "description": "string",
      "policyName": "string",
      "operationID": "string",
      "dataToSign": "string",
      "publicKey": "string",
      "signature": "string",
      "keySpec": "string",
      "operationState": "string",
      "rejectionReason": "string",
      "policyID": "string",
      "dataCollectorId": "string",
      "collectedData": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [SignAuditItem] true none Items

Stats

{
  "participants": {
    "total": 0,
    "inactive": 0
  },
  "operations": {
    "total": 0,
    "pending": 0
  },
  "vaults": {
    "total": 0,
    "inactive": 0,
    "pending": 0
  }
}

Properties

Name Type Required Restrictions Description
participants Participants true none none
operations Operations true none none
vaults Vaults true none none

SupportedLedgerResponse

{
  "ledgerName": "string"
}

Properties

Name Type Required Restrictions Description
ledgerName string true none The name of the ledger

SystemDetails

{
  "version": "string",
  "instanceId": "string",
  "ukc": {
    "healthy": true,
    "errorMessage": "string",
    "version": "string"
  },
  "db": {
    "healthy": true,
    "errorMessage": "string",
    "version": "string",
    "schemaVersion": "string"
  },
  "nativeCrypto": {
    "healthy": true,
    "errorMessage": "string",
    "version": "string"
  },
  "fcm": {
    "healthy": true,
    "errorMessage": "string",
    "version": "string"
  }
}

Properties

Name Type Required Restrictions Description
version string true none none
instanceId string true none none
ukc Entity true none none
db DBEntity true none none
nativeCrypto Entity true none none
fcm Entity true none none

TrustedInstanceInfoListResponse

{
  "totalItems": 0,
  "items": [
    {
      "instanceId": "string",
      "encryptionKey": "string",
      "signKey": "string",
      "description": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total items
items [TrustedInstanceInfoResponse] true none Trusted instances

TrustedInstanceInfoResponse

{
  "instanceId": "string",
  "encryptionKey": "string",
  "signKey": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
instanceId string true none the instance ID
encryptionKey string true none The encryption key
signKey string true none The signing key
description string false none Instance description

TrustedSystemsAuditItem

{
  "auditSeverity": "string",
  "event": "string",
  "initiatorId": "string",
  "initiatorName": "string",
  "timestamp": "string",
  "duration": 0,
  "error": "string",
  "details": "string",
  "accountId": "string",
  "accountName": "string",
  "version": 0,
  "participantId": "string",
  "participantName": "string",
  "operationId": "string",
  "operationKind": "string",
  "operationStatus": "string",
  "trustedInstanceId": "string",
  "vaultId": "string",
  "vaultName": "string"
}

Properties

Name Type Required Restrictions Description
auditSeverity string false none none
event string false none none
initiatorId string false none none
initiatorName string false none none
timestamp string false none none
duration integer(int64) false none none
error string false none none
details string false none none
accountId string false none none
accountName string false none none
version number false none none
participantId string false none none
participantName string false none none
operationId string false none none
operationKind string false none none
operationStatus string false none none
trustedInstanceId string false none none
vaultId string false none none
vaultName string false none none

TrustedSystemsAuditResponse

{
  "totalItems": 0,
  "items": [
    {
      "auditSeverity": "string",
      "event": "string",
      "initiatorId": "string",
      "initiatorName": "string",
      "timestamp": "string",
      "duration": 0,
      "error": "string",
      "details": "string",
      "accountId": "string",
      "accountName": "string",
      "version": 0,
      "participantId": "string",
      "participantName": "string",
      "operationId": "string",
      "operationKind": "string",
      "operationStatus": "string",
      "trustedInstanceId": "string",
      "vaultId": "string",
      "vaultName": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [TrustedSystemsAuditItem] true none Items

UkcVaultKey

{
  "ukcKeyId": "string"
}

Properties

Name Type Required Restrictions Description
ukcKeyId string true none The key UKC key ID

UpdateAccountRequest

{
  "name": "string",
  "isGlobal": true
}

Properties

Name Type Required Restrictions Description
name string true none Account name
isGlobal boolean false none Is account global

UpdateAttributeTemplateGroupRequest

{
  "id": "string",
  "attributeTemplates": [
    "string"
  ],
  "description": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
attributeTemplates [string] false none none
description string false none none

UpdateAttributeTemplateRequest

{
  "id": "string",
  "description": "string",
  "type": "string",
  "range": {
    "min": "string",
    "max": "string"
  }
}

Properties

Name Type Required Restrictions Description
id string true none Vault attribute ID
description string true none Vault attribute description
type string true none Vault attribute type
range Range true none none

UpdateDataCollectorRequest

{
  "name": "string",
  "state": "NOT_ACTIVATED",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
name string false none none
state string true none none
description string false none none

Enumerated Values

Property Value
state NOT_ACTIVATED
state ACTIVATED
state SUSPENDED
state REVOKED

UpdateParticipantStatusRequest

{
  "status": "DEACTIVATED"
}

Properties

Name Type Required Restrictions Description
status string true none ParticipantWithVault status in vault

Enumerated Values

Property Value
status DEACTIVATED
status SUSPENDED
status REVOKED
status ACTIVATED

UpdateParticipantStatusWithPolicyRequest

{
  "status": "DEACTIVATED",
  "policyId": "string"
}

Properties

Name Type Required Restrictions Description
status string true none ParticipantWithVault status in vault
policyId string false none The policy ID in which to change a participant's status. If none is specified, the participant's status will be changed in the admin quorum.

Enumerated Values

Property Value
status DEACTIVATED
status SUSPENDED
status REVOKED
status ACTIVATED

UpdateParticipateRequest

{
  "name": "string",
  "email": "string",
  "role": "string",
  "status": "ACTIVATED",
  "deviceType": "IOS"
}

Properties

Name Type Required Restrictions Description
name string false none ParticipantWithVault name
email string false none ParticipantWithVault email
role string false none ParticipantWithVault role
status string false none ParticipantWithVault status
deviceType string false none Participant device type

Enumerated Values

Property Value
status ACTIVATED
status DEACTIVATED
status SUSPENDED
status REVOKED
deviceType IOS
deviceType ANDROID
deviceType BOT

UpdateUserRequest

{
  "name": "string",
  "loginName": "string",
  "status": "ACTIVATED",
  "role": "Super_User",
  "email": "string",
  "locked": true
}

Properties

Name Type Required Restrictions Description
name string false none new user name
loginName string false none new user login name
status string false none User status
role string false none User's role
email string false none none
locked boolean false none Is user locked

Enumerated Values

Property Value
status ACTIVATED
status SUSPENDED
status REVOKED
role Super_User
role Security_Officer
role Trader

UpdateVaultAttributesOperationDetails

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "policyDetails": {
    "id": "string",
    "name": "string"
  },
  "vaultName": "string",
  "newVaultAttributes": {
    "property1": "string",
    "property2": "string"
  },
  "oldVaultAttributes": {
    "property1": "string",
    "property2": "string"
  }
}

Properties

Name Type Required Restrictions Description
operationID string true none Operation ID
kind string true none Operation kind
status string true none Operation status.

The status field has the following possible values:
- PENDING - waiting for participant approval.
- PENDING_ACTIVATION - used for rejoining a quorum vault operation.
- WAITING_DATA_COLLECTION - waiting for data collector data.

The sign operation finishes with one of these status values:
- CANCELED - user canceled the operation.
- FAILED - set by a wallet if, for example, the wallet's call to the ledger failed. Also set if the CASP service was not able to sign any of the provided hashes.
- ERROR - the CASP server encountered an internal error.
- COMPLETED
- When working without built-in Wallet - enough participants approved and CASP has the signature.
- When working with built-in Wallet - the wallet successfully sent the signed transaction to the ledger.
- REJECTED - a participant rejected the operation, a rejection policy was selected when CASP was processing policies, or no policy was selected when CASP was processing policies.
statusText string true none Operation status text
createdAt string true none Operation creation time
vaultID string true none Vault ID
description string false none Description of the operation
isApproved boolean true none Approval state for the operation
accountID string true none Account ID for the operation
groups [ApprovalGroupDetails] true none Operation approval groups
policyDetails PolicyDetails false none none
vaultName string true none Item name for the operation
newVaultAttributes object true none new vault attributes
» additionalProperties string false none none
oldVaultAttributes object true none old vault attributes
» additionalProperties string false none none

Enumerated Values

Property Value
kind JOIN_VAULT
kind REJOIN_VAULT
kind JOIN_VAULT_ADMIN_QUORUM
kind JOIN_POLICY_VAULT
kind ADD_MEMBER
kind ADMIN_QUORUM_APPROVAL
kind QUORUM_SIGN
kind CALCULATE_PUBLIC_KEY
kind UPDATE_VAULT_ATTRIBUTES
kind ERROR
status PENDING
status WAITING_DATA_COLLECTION
status PENDING_ACTIVATION
status APPROVED
status COMPLETED
status REJECTED
status CANCELED
status FAILED
status ERROR
statusText Pending
statusText Pending activation
statusText Approved
statusText Completed
statusText Rejected
statusText Canceled
statusText Failed
statusText N/A

UpdateVaultAttributesRequest

{
  "newVaultAttributes": {
    "property1": "string",
    "property2": "string"
  },
  "description": "string"
}

Properties

Name Type Required Restrictions Description
newVaultAttributes object false none none
» additionalProperties string false none none
description string false none none

UpdateVaultDataCollectorsGroupsRequest

{
  "newDataCollectorsGroups": [
    {
      "name": "string",
      "attributeTemplateGroup": "string",
      "ids": [
        "string"
      ],
      "minimumRequired": 1
    }
  ],
  "description": "string"
}

Properties

Name Type Required Restrictions Description
newDataCollectorsGroups [DataCollectorsGroupDetails] true none Vault data collectors groups
description string false none none

UpdateVaultRequest

{
  "name": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
name string true none Vault name
description string false none vault description

UserAuditItem

{
  "auditSeverity": "string",
  "event": "string",
  "initiatorId": "string",
  "initiatorName": "string",
  "timestamp": "string",
  "duration": 0,
  "error": "string",
  "details": "string",
  "accountId": "string",
  "accountName": "string",
  "version": 0,
  "participantId": "string",
  "participantName": "string",
  "vaultId": "string",
  "vaultName": "string",
  "userId": "string",
  "userName": "string",
  "userRole": "string",
  "userEmail": "string",
  "userStatus": "string"
}

Properties

Name Type Required Restrictions Description
auditSeverity string false none none
event string false none none
initiatorId string false none none
initiatorName string false none none
timestamp string false none none
duration integer(int64) false none none
error string false none none
details string false none none
accountId string false none none
accountName string false none none
version number false none none
participantId string false none none
participantName string false none none
vaultId string false none none
vaultName string false none none
userId string false none none
userName string false none none
userRole string false none none
userEmail string false none none
userStatus string false none none

UserInfoResponse

{
  "id": "string",
  "name": "string",
  "loginName": "string",
  "status": "string",
  "role": "string",
  "enable2fa": true,
  "activationCode": "string",
  "email": "string",
  "locked": true,
  "pushEnabled": true,
  "deviceType": "string",
  "creationTime": "string",
  "modificationTime": "string",
  "lastLoginTime": "string",
  "authType": "OIDC"
}

Properties

Name Type Required Restrictions Description
id string true none User ID
name string false none User name
loginName string true none User login name
status string true none User status
role string true none User role
enable2fa boolean true none Is 2FA enabled
activationCode string false none User activation code for 2FA
email string false none User's email
locked boolean true none Is user locked
pushEnabled boolean true none User has push notifications enabled
deviceType string false none User/Participant device type
creationTime string true none User creation time
modificationTime string true none User last modification time
lastLoginTime string false none User last login time
authType string true none Authentication type

Enumerated Values

Property Value
authType OIDC
authType OAUTH

UsersAuditResponse

{
  "totalItems": 0,
  "items": [
    {
      "auditSeverity": "string",
      "event": "string",
      "initiatorId": "string",
      "initiatorName": "string",
      "timestamp": "string",
      "duration": 0,
      "error": "string",
      "details": "string",
      "accountId": "string",
      "accountName": "string",
      "version": 0,
      "participantId": "string",
      "participantName": "string",
      "vaultId": "string",
      "vaultName": "string",
      "userId": "string",
      "userName": "string",
      "userRole": "string",
      "userEmail": "string",
      "userStatus": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [UserAuditItem] true none Items

ValidTimeSlot

{
  "days": "string",
  "timeStart": "string",
  "timeEnd": "string"
}

Properties

Name Type Required Restrictions Description
days string true none Days of the week in comma separated list. e.g. 0,1,3 for Sunday, Monday and Wednesday
timeStart string true none UTC time of day in the following format: HH:MM
timeEnd string true none UTC time of day in the following format: HH:MM

VaultApprovalGroup

{
  "name": "string",
  "members": [
    {
      "approvedAt": "string",
      "id": "string",
      "isApproved": true,
      "name": "string",
      "status": "STARTED",
      "approvalGroupAccount": {
        "id": "string",
        "name": "string"
      },
      "label": "string",
      "isGlobal": true,
      "isActive": true,
      "globalStatus": "ACTIVATED",
      "isOffline": true
    }
  ],
  "requiredApprovals": 0,
  "order": 0,
  "deactivateAllowed": true,
  "isOffline": true,
  "sparePartiesLeft": 0
}

Properties

Name Type Required Restrictions Description
name string true none Approval group name
members [ApprovalGroupParticipant] true none A list of participants in the group
requiredApprovals integer(int32) true none The number of group participants that need to give approval
order integer(int32) true none This field determines the order in which groups are prompted for approvals
deactivateAllowed boolean true none A group participant can be suspended or revoked from this group
isOffline boolean true none Group is offline - conclude only offline participants
sparePartiesLeft integer(int32) true none Count Spare Parties left By Group Name

VaultAuditItem

{
  "auditSeverity": "string",
  "event": "string",
  "initiatorId": "string",
  "initiatorName": "string",
  "timestamp": "string",
  "duration": 0,
  "error": "string",
  "details": "string",
  "accountId": "string",
  "accountName": "string",
  "version": 0,
  "participantId": "string",
  "participantName": "string",
  "operationId": "string",
  "vaultId": "string",
  "vaultName": "string",
  "userId": "string",
  "userName": "string",
  "operationKind": "string",
  "adminQuorum": "string",
  "policies": "string",
  "derivationString": "string"
}

Properties

Name Type Required Restrictions Description
auditSeverity string false none none
event string false none none
initiatorId string false none none
initiatorName string false none none
timestamp string false none none
duration integer(int64) false none none
error string false none none
details string false none none
accountId string false none none
accountName string false none none
version number false none none
participantId string false none none
participantName string false none none
operationId string false none none
vaultId string false none none
vaultName string false none none
userId string false none none
userName string false none none
operationKind string false none none
adminQuorum string false none none
policies string false none none
derivationString string false none none

VaultBackupData

{
  "vaultID": "string",
  "backupData": "string",
  "publicKey": "string"
}

Properties

Name Type Required Restrictions Description
vaultID string true none Vault ID
backupData string true none Vault backup data
publicKey string true none Vault public key

VaultDetails

{
  "description": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true,
      "sparePartiesLeft": 0
    }
  ],
  "id": "string",
  "name": "string",
  "accountID": "string",
  "status": "NOT_INITIALIZED",
  "statusText": "Waiting for participants to join",
  "isActive": true,
  "cryptoKind": "ECDSA",
  "curveName": "string",
  "providerKind": "string",
  "providerData": "string",
  "hierarchy": "string",
  "policies": [
    {
      "name": "string",
      "id": "string",
      "description": "string",
      "enabled": true,
      "timeZone": "string",
      "groups": [
        {
          "name": "string",
          "members": [
            {
              "approvedAt": "string",
              "id": "string",
              "isApproved": true,
              "name": "string",
              "status": "STARTED",
              "approvalGroupAccount": {
                "id": "string",
                "name": "string"
              },
              "label": "string",
              "isGlobal": true,
              "isActive": true,
              "globalStatus": "ACTIVATED",
              "isOffline": true
            }
          ],
          "requiredApprovals": 0,
          "order": 0,
          "deactivateAllowed": true,
          "isOffline": true
        }
      ],
      "rules": {
        "weeklyTimeSlots": [
          {
            "days": "string",
            "timeStart": "string",
            "timeEnd": "string"
          }
        ],
        "amountRange": {
          "property1": {
            "minimum": 0,
            "maximum": 0
          },
          "property2": {
            "minimum": 0,
            "maximum": 0
          }
        },
        "whiteList": [
          "string"
        ],
        "derivedWhitelist": [
          {
            "chainCode": "string",
            "publicKey": "string",
            "level": 0,
            "parentFingerprint": "string",
            "childNumber": 0
          }
        ],
        "attributes": [
          {
            "id": "string",
            "op": "string",
            "value": "string"
          }
        ]
      },
      "isOffline": true,
      "policyKind": "APPROVAL"
    }
  ],
  "isOffline": true,
  "approvalStructure": "QUORUM",
  "attributes": {
    "property1": "string",
    "property2": "string"
  },
  "dataCollectorsGroups": [
    {
      "name": "string",
      "attributeTemplateGroup": "string",
      "ids": [
        "string"
      ],
      "minimumRequired": 1
    }
  ],
  "creationTime": "string",
  "modificationTime": "string"
}

Properties

Name Type Required Restrictions Description
description string false none Vault description
groups [VaultApprovalGroup] true none Vault approval groups
id string true none Vault ID
name string true none Vault name
accountID string true none Vault account ID
status string true none Vault textual status
statusText string true none Vault textual status
isActive boolean true none Vault active state
cryptoKind string false none Type of cryptographic algorithm
curveName string true none Vault's curve
providerKind string false none Coin type that created the vault
providerData string false none This is a field that can be used to store information in the CASP database. The information can subsequently be read back as needed.
hierarchy string true none Vault hierarchy
policies [WithdrawalPolicyDetails] false none Vault policies
isOffline boolean false none is offline/online vault property
approvalStructure string true none Is Vault approval structure
attributes object false none Vault's attributes
» additionalProperties string false none none
dataCollectorsGroups [DataCollectorsGroupDetails] false none Vault data collectors groups
creationTime string true none Vault creation time
modificationTime string true none Vault last modification time

Enumerated Values

Property Value
status NOT_INITIALIZED
status INITIALIZED
status DEACTIVATED
statusText Waiting for participants to join
statusText Ready
statusText Deactivated
statusText N/A
cryptoKind ECDSA
cryptoKind EDDSA
approvalStructure QUORUM
approvalStructure POLICY
approvalStructure STAKING_POLICIES

VaultInfo

{
  "id": "string",
  "name": "string",
  "description": "string",
  "cryptoKind": "ECDSA",
  "providerKind": "string",
  "isActive": true,
  "status": "NOT_INITIALIZED",
  "statusText": "Waiting for participants to join",
  "providerData": "string",
  "pendingOperations": 0,
  "hierarchy": "NONE",
  "isDeletable": true,
  "approvalStructure": "QUORUM",
  "creationTime": "string",
  "modificationTime": "string",
  "offline": true
}

Properties

Name Type Required Restrictions Description
id string true none Vault ID
name string true none Vault name
description string false none Vault description
cryptoKind string false none Type of cryptographic algorithm
providerKind string false none Coin type that created the vault
isActive boolean true none Vault active state
status string true none Vault status
statusText string true none Vault status text
providerData string true none This is a field that can be used to store information in the CASP database. The information can subsequently be read back as needed.
pendingOperations integer(int64) true none Vault pending requests
hierarchy string false none Vault status text
isDeletable boolean true none Is Vault able to be deleted
approvalStructure string true none Is Vault approval structure
creationTime string true none Vault creation time
modificationTime string true none Vault last modification time
offline boolean true none Is Vault is offline

Enumerated Values

Property Value
cryptoKind ECDSA
cryptoKind EDDSA
status NOT_INITIALIZED
status INITIALIZED
status DEACTIVATED
statusText Waiting for participants to join
statusText Ready
statusText Deactivated
hierarchy NONE
hierarchy BIP32
hierarchy BIP44
approvalStructure QUORUM
approvalStructure POLICY
approvalStructure STAKING_POLICIES

VaultOperationAuditItem

{
  "auditSeverity": "string",
  "event": "string",
  "initiatorId": "string",
  "initiatorName": "string",
  "timestamp": "string",
  "duration": 0,
  "error": "string",
  "details": "string",
  "accountId": "string",
  "accountName": "string",
  "version": 0,
  "participantId": "string",
  "participantName": "string",
  "operationId": "string",
  "userId": "string",
  "userName": "string",
  "operationApprovalAuditItems": "string",
  "approvedByQuorum": "string",
  "operationCanceled": "string",
  "operationDeclines": "string",
  "vaultId": "string",
  "vaultName": "string",
  "stakingPolicyID": "string",
  "stakingPolicyMemberType": "string",
  "operationKind": "string",
  "adminQuorum": "string",
  "policies": "string",
  "derivationString": "string"
}

Properties

Name Type Required Restrictions Description
auditSeverity string false none none
event string false none none
initiatorId string false none none
initiatorName string false none none
timestamp string false none none
duration integer(int64) false none none
error string false none none
details string false none none
accountId string false none none
accountName string false none none
version number false none none
participantId string false none none
participantName string false none none
operationId string false none none
userId string false none none
userName string false none none
operationApprovalAuditItems string false none none
approvedByQuorum string false none none
operationCanceled string false none none
operationDeclines string false none none
vaultId string false none none
vaultName string false none none
stakingPolicyID string false none none
stakingPolicyMemberType string false none none
operationKind string false none none
adminQuorum string false none none
policies string false none none
derivationString string false none none

VaultPublicKeyResponse

{
  "publicKey": "string"
}

Properties

Name Type Required Restrictions Description
publicKey string true none Vault's public key

Vaults

{
  "total": 0,
  "inactive": 0,
  "pending": 0
}

Properties

Name Type Required Restrictions Description
total integer(int32) true none The number of vaults that belong to this account
inactive integer(int32) true none The number of inactive vaults that belong to this account
pending integer(int32) true none The number of pending for activation vaults that belong to this account

VaultsAuditResponse

{
  "totalItems": 0,
  "items": [
    {
      "auditSeverity": "string",
      "event": "string",
      "initiatorId": "string",
      "initiatorName": "string",
      "timestamp": "string",
      "duration": 0,
      "error": "string",
      "details": "string",
      "accountId": "string",
      "accountName": "string",
      "version": 0,
      "participantId": "string",
      "participantName": "string",
      "operationId": "string",
      "vaultId": "string",
      "vaultName": "string",
      "userId": "string",
      "userName": "string",
      "operationKind": "string",
      "adminQuorum": "string",
      "policies": "string",
      "derivationString": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalItems integer(int32) true none Total Items
items [VaultAuditItem] true none Items

WithdrawalPolicy

{
  "name": "string",
  "description": "string",
  "enabled": true,
  "isOffline": true,
  "timeZone": "string",
  "groups": [
    {
      "name": "string",
      "requiredApprovals": 1,
      "members": [
        {
          "id": "string"
        }
      ],
      "isOffline": true
    }
  ],
  "rules": {
    "weeklyTimeSlots": [
      {
        "days": "string",
        "timeStart": "string",
        "timeEnd": "string"
      }
    ],
    "amountRange": {
      "property1": {
        "minimum": 0,
        "maximum": 0
      },
      "property2": {
        "minimum": 0,
        "maximum": 0
      }
    },
    "whiteList": [
      "string"
    ],
    "derivedWhitelist": [
      {
        "chainCode": "string",
        "publicKey": "string",
        "level": 0,
        "parentFingerprint": "string",
        "childNumber": 0
      }
    ],
    "attributes": [
      {
        "id": "string",
        "op": "string",
        "value": "string"
      }
    ]
  },
  "policyKind": "APPROVAL"
}

Properties

Name Type Required Restrictions Description
name string true none policy name
description string false none Policy description
enabled boolean false none is the policy enabled, default is TRUE
isOffline boolean false none Is policy offline, for offline vaults default is true, for online vaults default is false
timeZone string false none Policy time zone, default is UTC
groups [ApprovalGroup] false none none
rules Rules false none none
policyKind string true none Policy policyKind

Enumerated Values

Property Value
policyKind APPROVAL
policyKind REJECTION

WithdrawalPolicyDetails

{
  "name": "string",
  "id": "string",
  "description": "string",
  "enabled": true,
  "timeZone": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "rules": {
    "weeklyTimeSlots": [
      {
        "days": "string",
        "timeStart": "string",
        "timeEnd": "string"
      }
    ],
    "amountRange": {
      "property1": {
        "minimum": 0,
        "maximum": 0
      },
      "property2": {
        "minimum": 0,
        "maximum": 0
      }
    },
    "whiteList": [
      "string"
    ],
    "derivedWhitelist": [
      {
        "chainCode": "string",
        "publicKey": "string",
        "level": 0,
        "parentFingerprint": "string",
        "childNumber": 0
      }
    ],
    "attributes": [
      {
        "id": "string",
        "op": "string",
        "value": "string"
      }
    ]
  },
  "isOffline": true,
  "policyKind": "APPROVAL"
}

Properties

Name Type Required Restrictions Description
name string true none policy name
id string true none policy id
description string false none Policy description
enabled boolean false none is the policy enabled, default is TRUE
timeZone string false none Policy time zone
groups [ApprovalGroupDetails] true none Approval groups
rules Rules false none none
isOffline boolean false none is policy offline, default is TRUE
policyKind string false none Policy kind, can be APPROVAL or REJECTION

Enumerated Values

Property Value
policyKind APPROVAL
policyKind REJECTION

Authentication

Resend sign transaction operation

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/operations/sign/{operationid}/resend',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X POST /casp/api/v1.0/mng/operations/sign/{operationid}/resend \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/operations/sign/{operationid}/resend

Resend the sign operation metadata. This tries to resend the results of the sign operation and complete the coin transaction

Parameters

Name In Type Required Description
operationid path string true Operation ID

Example responses

400 Response

{
  "type": "string",
  "title": "string",
  "details": "string",
  "status": 0
}

Responses

Status Meaning Description Schema
200 OK OK None
400 Bad Request Cannot resend the sign operation CASPErrorResponse
404 Not Found Operation not found CASPErrorResponse
500 Internal Server Error Resend Operation failed CASPErrorResponse

List UKC vault keys

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/vaults/{vaultId}/ukcKeys',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /casp/api/v1.0/mng/vaults/{vaultId}/ukcKeys \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/vaults/{vaultId}/ukcKeys

List UKC vault keys

Parameters

Name In Type Required Description
vaultId path string true Vault ID

Example responses

200 Response

[
  {
    "ukcKeyId": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK OK Inline
404 Not Found Vault not found CASPErrorResponse
500 Internal Server Error List UKC keys failed CASPErrorResponse

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [UkcVaultKey] false none none
» ukcKeyId string true none The key UKC key ID

Public key calculation status

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/operations/calculatePublicKey/{operationid}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /casp/api/v1.0/mng/operations/calculatePublicKey/{operationid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/operations/calculatePublicKey/{operationid}

For some keys, calculating public keys requires approval of the admin group. This request queries the operation status.

Parameters

Name In Type Required Description
operationid path string true Operation ID

Example responses

200 Response

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "policyDetails": {
    "id": "string",
    "name": "string"
  },
  "vaultName": "string",
  "totsParams": [
    {
      "index": 0,
      "numberOfFragments": 0
    }
  ],
  "publicKeys": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK OK CalculatePublicKeyOperationDetails
404 Not Found Operation not found CASPErrorResponse
500 Internal Server Error Get Operation status failed CASPErrorResponse

Policy Management

Refer to the Policy Management section in the Unbound CASP Developers Guide.

Add member to vault

Code samples

const inputBody = '{
  "participantID": "string",
  "description": "string",
  "policyId": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/vaults/{vaultId}/approval_groups/{approvalGroupId}/members',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X POST /casp/api/v1.0/mng/vaults/{vaultId}/approval_groups/{approvalGroupId}/members \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/vaults/{vaultId}/approval_groups/{approvalGroupId}/members

This API is used if a participant becomes unavailable or leaves an account and needs to be replaced with a new participant. A new participant may be added to an existing vault, but requires the approval of the existing vault quorum.

Body parameter

{
  "participantID": "string",
  "description": "string",
  "policyId": "string"
}

Parameters

Name In Type Required Description
vaultId path string true Vault ID
approvalGroupId path string true Approval Group Id
body body AddVaultParticipantRequest true Add vault group participant request

Example responses

200 Response

{
  "operation": {
    "operationID": "string",
    "kind": "JOIN_VAULT",
    "status": "PENDING",
    "statusText": "Pending",
    "createdAt": "string",
    "vaultID": "string",
    "description": "string",
    "isApproved": true,
    "accountID": "string",
    "groups": [
      {
        "name": "string",
        "members": [
          {
            "approvedAt": "string",
            "id": "string",
            "isApproved": true,
            "name": "string",
            "status": "STARTED",
            "approvalGroupAccount": {
              "id": "string",
              "name": "string"
            },
            "label": "string",
            "isGlobal": true,
            "isActive": true,
            "globalStatus": "ACTIVATED",
            "isOffline": true
          }
        ],
        "requiredApprovals": 0,
        "order": 0,
        "deactivateAllowed": true,
        "isOffline": true
      }
    ],
    "policyDetails": {
      "id": "string",
      "name": "string"
    },
    "vaultName": "string"
  },
  "participant": {
    "id": "string",
    "accountID": "string",
    "name": "string",
    "email": "string",
    "status": "NOT_ACTIVATED",
    "isActive": true,
    "accountName": "string",
    "role": "string",
    "pushEnabled": true,
    "offline": true,
    "activeOperations": 0,
    "deviceType": "IOS",
    "creationTime": "string",
    "modificationTime": "string"
  }
}

Responses

Status Meaning Description Schema
200 OK OK AddMemberResponse
404 Not Found Item not found CASPErrorResponse
500 Internal Server Error Add participant failed CASPErrorResponse

Set vault member status

Code samples

const inputBody = '{
  "status": "DEACTIVATED"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/vaults/{vaultId}/members/{participantId}/status',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X PUT /casp/api/v1.0/mng/vaults/{vaultId}/members/{participantId}/status \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

PUT /casp/api/v1.0/mng/vaults/{vaultId}/members/{participantId}/status

The suspended participant no longer takes part in the vault approval processes. Note that you can only suspend or revoke a user if the remaining number of participants is sufficient for the quorum, unless 'force' flag is provided.

Body parameter

{
  "status": "DEACTIVATED"
}

Parameters

Name In Type Required Description
participantId path string true Participant ID
vaultId path string true vault ID
force query boolean false Force update of participant status. Warning: Using this flag can result in an unusable vault!
body body UpdateParticipantStatusRequest true Participant status update request

Example responses

200 Response

{
  "id": "string",
  "name": "string",
  "status": "ACTIVATED",
  "approvalGroupAccount": {
    "id": "string",
    "name": "string"
  },
  "label": "string",
  "isGlobal": true,
  "isActive": true
}

Responses

Status Meaning Description Schema
200 OK OK ParticipantStatusChangeResponse
202 Accepted Accepted OperationDetails
403 Forbidden Suspending or revoking this participant would make the vault not operational (too few active participants left) CASPErrorResponse
404 Not Found Participant not found CASPErrorResponse
500 Internal Server Error Set vault member status failed CASPErrorResponse

Set vault member status (deprecated)

Code samples

const inputBody = '{
  "status": "DEACTIVATED",
  "policyId": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/vaults/{id}/members/{participantId}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X PUT /casp/api/v1.0/mng/vaults/{id}/members/{participantId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

PUT /casp/api/v1.0/mng/vaults/{id}/members/{participantId}

The suspended participant no longer takes part in the vault transaction approval processes. Note that you can only suspend or revoke a user, if the remaining number of participants is sufficient for the quorum policy, unless 'force' flag is provided.

Body parameter

{
  "status": "DEACTIVATED",
  "policyId": "string"
}

Parameters

Name In Type Required Description
participantId path string true Participant ID
id path string true vault ID
body body UpdateParticipantStatusWithPolicyRequest true Participant status update request

Example responses

404 Response

{
  "type": "string",
  "title": "string",
  "details": "string",
  "status": 0
}

Responses

Status Meaning Description Schema
200 OK OK None
404 Not Found Participant not found CASPErrorResponse
500 Internal Server Error Set vault member status failed CASPErrorResponse

Set policy member status

Code samples

const inputBody = '{
  "status": "DEACTIVATED"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/vaults/{vaultId}/policies/{policyId}/members/{participantId}/status',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X PUT /casp/api/v1.0/mng/vaults/{vaultId}/policies/{policyId}/members/{participantId}/status \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

PUT /casp/api/v1.0/mng/vaults/{vaultId}/policies/{policyId}/members/{participantId}/status

The suspended participant no longer takes part in the vault transaction approval processes. Note that you can only suspend or revoke a user, if the remaining number of participants is sufficient for the quorum policy, unless 'force' flag is provided.

Body parameter

{
  "status": "DEACTIVATED"
}

Parameters

Name In Type Required Description
participantId path string true Participant ID
vaultId path string true vault ID
policyId path string true policy ID
force query boolean false Force update of participant status
body body UpdateParticipantStatusRequest true Participant status update request

Example responses

200 Response

{
  "id": "string",
  "name": "string",
  "status": "ACTIVATED",
  "approvalGroupAccount": {
    "id": "string",
    "name": "string"
  },
  "label": "string",
  "isGlobal": true,
  "isActive": true
}

Responses

Status Meaning Description Schema
200 OK OK ParticipantStatusChangeResponse
202 Accepted Accepted OperationDetails
403 Forbidden Suspending or revoking this participant would make the vault not operational (too few active participants left) CASPErrorResponse
404 Not Found Item not found CASPErrorResponse
500 Internal Server Error Set vault member status participant failed CASPErrorResponse

Status of add member operation

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/operations/addmember/{operationid}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /casp/api/v1.0/mng/operations/addmember/{operationid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/operations/addmember/{operationid}

Adding a new participant to a vault requires approval of the quorum. This request queries the status of such an asynchronous operation. The Operation ID parameter must be from an 'ADD_MEMBER' operation.

Parameters

Name In Type Required Description
operationid path string true Operation ID

Example responses

200 Response

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "groups": [
    {
      "name": "string",
      "members": [
        {
          "approvedAt": "string",
          "id": "string",
          "isApproved": true,
          "name": "string",
          "status": "STARTED",
          "approvalGroupAccount": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
          "isGlobal": true,
          "isActive": true,
          "globalStatus": "ACTIVATED",
          "isOffline": true
        }
      ],
      "requiredApprovals": 0,
      "order": 0,
      "deactivateAllowed": true,
      "isOffline": true
    }
  ],
  "policyDetails": {
    "id": "string",
    "name": "string"
  },
  "vaultName": "string",
  "groupName": "string",
  "participantName": "string",
  "participantID": "string"
}

Responses

Status Meaning Description Schema
200 OK OK AddMemberDetails
404 Not Found Operation not found CASPErrorResponse
500 Internal Server Error Get Operation status failed CASPErrorResponse

Status of join policy vault operation

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('/casp/api/v1.0/mng/operations/joinpolicyvault/{operationid}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X GET /casp/api/v1.0/mng/operations/joinpolicyvault/{operationid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/operations/joinpolicyvault/{operationid}

Returns join policy vault operation details. The Operation ID parameter must be from a 'JOIN_POLICY_VAULT' operation.

Parameters

Name In Type Required Description
operationid path string true Operation ID

Example responses

200 Response

{
  "operationID": "string",
  "kind": "JOIN_VAULT",
  "status": "PENDING",
  "statusText": "Pending",
  "createdAt": "string",
  "vaultID": "string",
  "description": "string",
  "isApproved": true,
  "accountID": "string",
  "policies": [
    {
      "name": "string",
      "id": "string",
      "description": "string",
      "enabled": true,
      "timeZone": "string",
      "groups": [
        {
          "name": "string",
          "members": [
            {
              "approvedAt": "string",
              "id": "string",
              "isApproved": true,
              "name": "string",
              "status": "STARTED",
              "approvalGroupAccount": {
                "id": "string",
                "name": "string"
              },
              "label": "string",
              "isGlobal": true,
              "isActive": true,
              "globalStatus": "ACTIVATED",
              "isOffline": true
            }
          ],
          "requiredApprovals": 0,
          "order": 0,
          "deactivateAllowed": true,
          "isOffline": true
        }
      ],
      "rules": {
        "weeklyTimeSlots": [
          {
            "days": "string",
            "timeStart": "string",
            "timeEnd": "string"
          }
        ],
        "amountRange": {
          "property1": {
            "minimum": 0,
            "maximum": 0
          },
          "property2": {
            "minimum": 0,
            "maximum": 0
          }
        },
        "whiteList": [
          "string"
        ],
        "derivedWhitelist": [
          {
            "chainCode": "string",
            "publicKey": "string",
            "level": 0,
            "parentFingerprint": "string",
            "childNumber": 0
          }
        ],
        "attributes": [
          {
            "id": "string",
            "op": "string",
            "value": "string"
          }
        ]
      }
    }
  ],
  "vaultName": "string",
  "groupNameToJoin": "string"
}

Responses

Status Meaning Description Schema
200 OK OK JoinPolicyVaultOperationDetails
404 Not Found Operation not found CASPErrorResponse
500 Internal Server Error Get Operation status failed CASPErrorResponse

Callbacks

Sign callback URL

Code samples

const inputBody = '{
  "publicKeys": [
    "string"
  ],
  "providerData": "string",
  "dataToSign": [
    "string"
  ],
  "signatures": [
    "string"
  ],
  "v": [
    0
  ],
  "originalEntryIds": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/json'

};

fetch('/api/v1.0/sign_complete_callback?ledgerId=string',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

# You can also use wget
curl -X POST /api/v1.0/sign_complete_callback?ledgerId=string \
  -H 'Content-Type: application/json'

POST /sign_complete_callback

Sign callback url from CASP

Body parameter

{
  "publicKeys": [
    "string"
  ],
  "providerData": "string",
  "dataToSign": [
    "string"
  ],
  "signatures": [
    "string"
  ],
  "v": [
    0
  ],
  "originalEntryIds": [
    0
  ]
}

Parameters

Name In Type Required Description
ledgerId query string true The id of the ledger on which the transaction should take place
body body object true Signed Operation Request
» publicKeys body [string] true Vault public key
» providerData body string true Used to store information in the CASP database. The information can subsequently be read back as needed for the coin specific coin type usage.
» dataToSign body [string] true List of data to sign
» signatures body [string] true Signatures
» v body [integer] true recovery codes
» originalEntryIds body [integer] false List of indices matching the original dataForSignature list in case the server sends a partial list of signatures (when used with policies)

Responses

Status Meaning Description Schema
default Default returns data to store in CASP None

Schemas

Address

{
  "items": [
    {
      "address": "mkoTSoVG1pdKqycgbVyXpLmmaNK7ELbRXn"
    }
  ]
}

Properties

Name Type Required Restrictions Description
address string false none none

AssetBalance

{
  "asset": "string",
  "amount": "string"
}

Properties

Name Type Required Restrictions Description
asset string false none Asset symbol
amount string false none Amount to send

BalanceResponse

{
  "balances": [
    {
      "asset": "string",
      "amount": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
balances [AssetBalance] false none none

AddressBalanceResponse

{
  "address": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
  "balances": [
    {
      "asset": "YEENUS",
      "amount": 885.82
    },
    {
      "asset": "ETH",
      "amount": 8.2221820926
    },
    {
      "asset": "BOKKY",
      "amount": 0
    }
  ]
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BalanceResponse false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» address string false none none

VaultBalanceResponse

{
  "address": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
  "balances": [
    {
      "asset": "YEENUS",
      "amount": 885.82
    },
    {
      "asset": "ETH",
      "amount": 8.2221820926
    },
    {
      "asset": "BOKKY",
      "amount": 0
    }
  ]
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BalanceResponse false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» address string false none If the vault has only one address this attribute is returned. Otherwise, this attribute is ommited.
» vaultId string false none The vault ID
» coin string false none For BIP44 vaults - the coin type of the BIP44 account that was used to get the balance, otherwise ommited.
» account string false none For BIP44 vaults - indicates the BIP44 account index that was used to get the balance, otherwise ommited.

AppError

{
  "title": "Invalid argument",
  "details": "Unknown asset 'yeenussd'. Valid assets are: ETH,BOKKY,YEENUS,PAX",
  "errCode": "ERR_INVALID_ARGUMENTS",
  "type": "/errors/ERR_INVALID_ARGUMENTS"
}

Properties

Name Type Required Restrictions Description
title string false none The error title that can be used for user display
details string false none Detailed information about the error and resolution
errCode string false none A textual code that can be used to classify the error
type string false none Path for more information about the error

WithdrawalRequest

{
  "amount": "1.3",
  "asset": "YEENUS",
  "recipientAddress": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
  "description": "Payment 3332",
  "fee": "HIGH"
}

Properties

Name Type Required Restrictions Description
recipientAddress string true none The ledger address to recieve the assets
recipientVault string false none The target vault ID for internal transfers (originally for staking-pools)
asset string false none (Optional) The asset to send. If not provided, the default ledger asset is used.
amount any true none The asset amount to send

oneOf

Name Type Required Restrictions Description
» anonymous number(double) false none none

xor

Name Type Required Restrictions Description
» anonymous string false none none

continued

Name Type Required Restrictions Description
description string true none A short text that describes the puprpose of this withdrawal.
fee string false none A fee constant. Usually specificied as 'HIGH', 'MEDIUM' or 'LOW', but some ledgers use custom fee constants. If not provided, the ledger's default fee is used.

WithdrawalProviderData

{
  "request": {
    "amount": "1.3",
    "asset": "YEENUS",
    "recipientAddress": "0x7827D7fDb2B161a27fFeD3cC25C560D7aEFE2BD5",
    "description": "Payment 3332",
    "fee": "HIGH"
  },
  "txs": [
    {
      "serialized": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
request WithdrawalRequest false none none
txs [object] false none A list of ledger tranasactions created for the withdrawal
» serialized string false none The HEX encoded serialized transaction