NAV Navigation
JavaScript Shell

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

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:

Base URLs:

Email: Unbound Security Support Web: Unbound Security Support

BYOW Vault Operations

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

Create new vault

Code samples

const inputBody = '{
  "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
    }
  ],
  "incomingTransactionVault": true,
  "incomingTransactionVaultId": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('https://casp-server/casp/api/v1.0/mng/accounts/{accountId}/vaults',
{
  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 https://casp-server/casp/api/v1.0/mng/accounts/{accountId}/vaults \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/accounts/{accountId}/vaults

This request starts the process of creating a new vault. The vault is created only after the participants approve the vault creation according to the vault policy.

Note the following requirements depending on the value of cryptoKind:

Body parameter

{
  "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
    }
  ],
  "incomingTransactionVault": true,
  "incomingTransactionVaultId": "string"
}

Parameters

Name In Type Required Description
accountId path string true Account ID
body body CreateVaultRequest true Create Vault Request

Example responses

201 Response

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

Responses

Status Meaning Description Schema
201 Created New vault created successfully CreateVaultDataResponse
404 Not Found Missing data CASPErrorResponse
500 Internal Server Error Create vault failed CASPErrorResponse

List BYOW vaults

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/accounts/{accountId}/vaults',
{
  method: 'GET',

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

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

GET /casp/api/v1.0/mng/accounts/{accountId}/vaults

List all vaults in the account. By default only active vaults are listed.

Note: If the parameters skip and limit are not specified or both are set to 0, then the response data contains a JSON list of the items. If those parameters are set (>0), then the response data is the JSON object shown here.

Parameters

Name In Type Required Description
accountId path string true Account ID
status query array[string] false Show vaults with one or more of the following statuses: pending, ready, deactivated
providerKind query string false Filter by coin type
filter query string false Search the vault names and descriptions
sort query string false Specify the column name to sort by and the sort direction. The format is '{column_name}:{asc/desc}'. The default sort is ascending.

The column name can be one of the following: Name, Provider, Description, Status, Offline
skip query integer(int32) false The number of results to skip from the beginning of the results after applying the filter and sort
limit query integer(int32) false Maximum number of results to return

Enumerated Values

Parameter Value
status PENDING
status READY
status DEACTIVATED

Example responses

200 Response

{
  "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
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK ListResponseVaults
400 Bad Request Bad Request CASPErrorResponse
404 Not Found Account not found CASPErrorResponse
500 Internal Server Error List vaults per account failed CASPErrorResponse

Get BYOW vault info

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{id}',
{
  method: 'GET',

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

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

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

Get details of a vault

Parameters

Name In Type Required Description
id path string true Vault ID

Example responses

200 Response

{
  "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",
  "incomingTransactionVault": true,
  "incomingTransactionVaultId": "string"
}

Responses

Status Meaning Description Schema
200 OK OK VaultDetails
404 Not Found Vault not found CASPErrorResponse
500 Internal Server Error Get vault details failed CASPErrorResponse

Create a new address

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIndex}/chains/{chain}/addresses',
{
  method: 'POST',

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

# You can also use wget
curl -X POST https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIndex}/chains/{chain}/addresses \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIndex}/chains/{chain}/addresses

Parameters

Name In Type Required Description
vaultId path string true Vault ID
coinType path integer(int32) true Coin type
accountIndex path integer(int32) true Account index
chain path string true Add vault group member request
encoding query string false Key encoding

Enumerated Values

Parameter Value
chain change
chain external
encoding DER
encoding compressed
encoding uncompressed
encoding plain

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK CreateBip44AddressResponse
400 Bad Request Bad request CASPErrorResponse
404 Not Found Item not found CASPErrorResponse
500 Internal Server Error Add participant failed CASPErrorResponse

Start a signing process

Code samples

const inputBody = '{
  "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
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{id}/sign',
{
  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 https://casp-server/casp/api/v1.0/mng/vaults/{id}/sign \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/vaults/{id}/sign

Starts the process of a signing operation.

You can check the task status by calling the /operations API. When the signature is ready it is provided in the response payload.

This service should be used when the blockchain management is done outside of CASP, as it only signs the transaction without sending it to the relevant blockchain.

Notes:

Body parameter

{
  "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
  ]
}

Parameters

Name In Type Required Description
id path string true Vault ID
body body SignRequest true Sign Request

Example responses

200 Response

{
  "operationID": "string"
}

Responses

Status Meaning Description Schema
200 OK Sign request accepted OperationResponse
400 Bad Request Bad request SignRequestRejectedErrorResponse
500 Internal Server Error Sign failed CASPErrorResponse

Start incoming transaction signing

Code samples

const inputBody = '{
  "callbackUrl": "string",
  "ledger": "string",
  "rawTransactions": [
    "string"
  ],
  "description": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{id}/incomingTransactionSign',
{
  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 https://casp-server/casp/api/v1.0/mng/vaults/{id}/incomingTransactionSign \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/vaults/{id}/incomingTransactionSign

Starts the process of a signing operation.

You can check the task status by calling the /operations API. When the signature is ready it is provided in the response payload.

This service should be used when the blockchain management is done outside of CASP, as it only signs the transaction without sending it to the relevant blockchain.

Notes:

Body parameter

{
  "callbackUrl": "string",
  "ledger": "string",
  "rawTransactions": [
    "string"
  ],
  "description": "string"
}

Parameters

Name In Type Required Description
id path string true Vault ID
body body IncomingTransactionSignRequest true Internal sign Request

Example responses

200 Response

{
  "operationID": "string"
}

Responses

Status Meaning Description Schema
200 OK Sign request accepted OperationResponse
400 Bad Request Bad request SignRequestRejectedErrorResponse
500 Internal Server Error Sign failed CASPErrorResponse

Get sign operation

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/operations/sign/{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 https://casp-server/casp/api/v1.0/mng/operations/sign/{operationid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

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

Returns the sign operation metadata. The Operation ID parameter must be from a 'QUORUM_SIGN' operation.

The order of array fields (such as publicKeys and dataToSign) in the response is guaranteed to have the same order provided in the Start a signing process endpoint.

Parameters

Name In Type Required Description
operationid path string true Operation ID

Example responses

200 Response

{
  "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",
              "creationTime": "string",
              "modificationTime": "string",
              "authenticationKey": "string",
              "attributeTemplateGroup": {
                "id": "string",
                "description": "string",
                "attributeTemplateDetails": [
                  {
                    "id": "string",
                    "description": "string",
                    "type": "string",
                    "range": {}
                  }
                ]
              },
              "activationCode": "string"
            },
            "data": {
              "property1": "string",
              "property2": "string"
            },
            "collectionDone": true,
            "signedUniqueData": "string",
            "collectionStart": 0,
            "collectionEnd": 0
          }
        ],
        "name": "string"
      }
    ]
  },
  "vaultAttributes": {
    "property1": "string",
    "property2": "string"
  }
}

Responses

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

List operations

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/accounts/{accountId}/operations',
{
  method: 'GET',

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

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

GET /casp/api/v1.0/mng/accounts/{accountId}/operations

List operations associated with account vaults. By default, only operations which are in process (not completed) will be returned.

Note: If the parameters skip and limit are not specified or both are set to 0, then the response data contains a JSON list of the items. If those parameters are set (>0), then the response data is the JSON object shown here.

Parameters

Name In Type Required Description
accountId path string true Account ID
status query array[string] false Show operations with one or more of the following statuses: approved, completed, pending, pending activation, canceled, rejected, failed, error
filter query string false Filter by vault names and operation description
sort query string false Specify the column name to sort by and the sort direction. The format is '{column_name}:{asc/desc}'. The default sort is ascending.

The column name can be one of the following: Vault, Kind, CreatedAt, StatusText, Description
skip query integer(int32) false The number of results to skip from the beginning of the results after applying the filter and sort
limit query integer(int32) false The maximum number of results to return

Enumerated Values

Parameter Value
status APPROVED
status COMPLETED
status FAILED
status PENDING
status CANCELED
status REJECTED
status PENDING_ACTIVATION
status WAITING_DATA_COLLECTION

Example responses

200 Response

{
  "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"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK ListResponseOperations
400 Bad Request Bad Request CASPErrorResponse
404 Not Found Not found CASPErrorResponse
500 Internal Server Error List operations per account failed CASPErrorResponse

List sub account operations

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIdentifier}/operations',
{
  method: 'GET',

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

# You can also use wget
curl -X GET https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIdentifier}/operations \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIdentifier}/operations

List sub account operations.

Note: If the parameters skip and limit are not specified or both are set to 0, then the response data contains a JSON list of the items. If those parameters are set (>0), then the response data is the JSON object shown here.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
coinType path integer(int32) true Coin type
accountIdentifier path string true Account identifier, which can be the index or the name
skip query integer(int32) false The number of results to skip from the beginning of the results
limit query integer(int32) false The maximum number of results to return

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK ListResponseOperationsInfo
400 Bad Request Incorrect vault type CASPErrorResponse
500 Internal Server Error List sub account operations failed CASPErrorResponse

Get operation details

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/operations/{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 https://casp-server/casp/api/v1.0/mng/operations/{operationid} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

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

Get the details of an CASP 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"
}

Responses

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

Cancel a pending operation

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/operations/{operationid}/cancel',
{
  method: 'POST',

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

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

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

Parameters

Name In Type Required Description
operationid path string true Operation ID

Example responses

404 Response

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

Responses

Status Meaning Description Schema
200 OK OK None
404 Not Found Operation not found CASPErrorResponse
500 Internal Server Error Cancel a pending operation failed CASPErrorResponse

Update vault policies

Code samples

const inputBody = '[
  {
    "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
  }
]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{id}/policies',
{
  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 https://casp-server/casp/api/v1.0/mng/vaults/{id}/policies \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

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

Update vault policies

Body parameter

[
  {
    "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
  }
]

Parameters

Name In Type Required Description
id path string true Vault ID
body body PolicyUpdateDetails true Create Vault Request

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK OperationInfo
400 Bad Request bad request CASPErrorResponse
404 Not Found Vault not found CASPErrorResponse
500 Internal Server Error Update vault policies failed CASPErrorResponse

Public key calculation status

Code samples


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

};

fetch('https://casp-server/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 https://casp-server/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

Status of vault attributes operation

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/operations/updateVaultDataCollectorsGroups/{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 https://casp-server/casp/api/v1.0/mng/operations/updateVaultDataCollectorsGroups/{operationId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/operations/updateVaultDataCollectorsGroups/{operationId}

Returns the operation metadata. The Operation ID parameter must be from an 'UPDATE_DATA_COLLECTION_CONFIGURATION' 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",
  "newVaultAttributes": {
    "property1": "string",
    "property2": "string"
  },
  "oldVaultAttributes": {
    "property1": "string",
    "property2": "string"
  }
}

Responses

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

BYOW 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('https://casp-server/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 https://casp-server/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

Status of join policy vault operation

Code samples


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

};

fetch('https://casp-server/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 https://casp-server/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

Set vault member status

Code samples

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

};

fetch('https://casp-server/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 https://casp-server/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('https://casp-server/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 https://casp-server/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('https://casp-server/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 https://casp-server/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

BYOW Keychain Management

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

Add a coin type to a vault

Code samples

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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{id}/coins',
{
  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 https://casp-server/casp/api/v1.0/mng/vaults/{id}/coins \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/vaults/{id}/coins

Body parameter

{
  "coinType": 0
}

Parameters

Name In Type Required Description
id path string true Vault ID
body body AddBip44CoinRequest true Add vault group participant 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 Item not found CASPErrorResponse
500 Internal Server Error Add participant failed CASPErrorResponse

List all the coins in a vault

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{id}/coins',
{
  method: 'GET',

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

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

GET /casp/api/v1.0/mng/vaults/{id}/coins

This endpoint is only functional if you generated a BIP44 vault.

Note: If the parameters skip and limit are not specified or both are set to 0, then the response data contains a JSON list of the items. If those parameters are set (>0), then the response data is the JSON object shown here.

Parameters

Name In Type Required Description
id path string true Vault ID
skip query integer(int32) false The number of results to skip from the beginning of the results
limit query integer(int32) false The maximum number of results to return

Example responses

200 Response

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

Responses

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

Get vault public key

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/publickey',
{
  method: 'GET',

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

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

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

Returns a deterministic vault's public key. Note that this is only valid for a vault with no hierarchy.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
encoding query string false Key encoding

Enumerated Values

Parameter Value
encoding DER
encoding compressed
encoding uncompressed
encoding plain

Example responses

200 Response

{
  "publicKey": "string"
}

Responses

Status Meaning Description Schema
200 OK OK VaultPublicKeyResponse
400 Bad Request Bad request CASPErrorResponse
404 Not Found Item not found CASPErrorResponse
500 Internal Server Error Add participant failed CASPErrorResponse

Create an account

Code samples

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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts',
{
  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 https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts

Add an account to a coin in a vault.

This endpoint is only functional if you generated a BIP44 vault.

Body parameter

{
  "accountName": "string"
}

Parameters

Name In Type Required Description
vaultId path string true Vault ID
coinType path integer(int32) true Coin type
body body AddBip44AccountRequest false Add account request

Example responses

200 Response

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

Responses

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

List accounts in a vault

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts',
{
  method: 'GET',

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

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

GET /casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts

List all the accounts in a vault for a given coin.

This endpoint is only functional if you generated a BIP44 vault.

Note: If the parameters skip and limit are not specified or both are set to 0, then the response data contains a JSON list of the items. If those parameters are set (>0), then the response data is the JSON object shown here.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
coinType path integer(int32) true Coin type
skip query integer(int32) false The number of results to skip from the beginning of the results
limit query integer(int32) false The maximum number of results to return

Example responses

200 Response

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

Responses

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

Find account index by name

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/find?accountName=string',
{
  method: 'GET',

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

# You can also use wget
curl -X GET https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/find?accountName=string \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/find

This endpoint is only functional if you generated a BIP44 vault.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
coinType path integer(int32) true Coin type
accountName query string true Account name

Example responses

200 Response

{
  "index": 0
}

Responses

Status Meaning Description Schema
200 OK OK Bip44AccountIndex
400 Bad Request Incorrect vault type CASPErrorResponse
404 Not Found Account index not found CASPErrorResponse
500 Internal Server Error find account index failed CASPErrorResponse

Get account by identifier

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIdentifier}',
{
  method: 'GET',

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

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

GET /casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIdentifier}

Get detailed information about a vault for a given coin type and account index.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
coinType path integer(int32) true Coin type
accountIdentifier path string true Account identifier, which can be the index or the name

Example responses

200 Response

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

Responses

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

List chain addresses

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIndex}/chains/{chain}/addresses',
{
  method: 'GET',

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

# You can also use wget
curl -X GET https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIndex}/chains/{chain}/addresses \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIndex}/chains/{chain}/addresses

List all the BIP44 addresses in a vault for a given coin type, account index and address chain type.

This endpoint is only functional if you generated a BIP44 vault.

Note: If the parameters skip and limit are not specified or both are set to 0, then the response data contains a JSON list of the items. If those parameters are set (>0), then the response data is the JSON object shown here.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
coinType path integer(int32) true Coin type
accountIndex path integer(int32) true Account index
chain path string true Address type
encoding query string false Key encoding
sort query string false Specify the column name to sort by and the sort direction. The format is '{column_name}:{asc/desc}'. The default sort is ascending.

The column name can be one of the following: lastUpdatedAt
skip query integer(int32) false The number of results to skip from the beginning of the results
limit query integer(int32) false The maximum number of results to return

Enumerated Values

Parameter Value
chain change
chain external
chain all
encoding DER
encoding compressed
encoding uncompressed
encoding plain

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK ListResponseBip44ChainAddresses
400 Bad Request Bad request CASPErrorResponse
404 Not Found Item not found CASPErrorResponse
500 Internal Server Error Add participant failed CASPErrorResponse

Get BYOW account backup

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIdentifier}/backup',
{
  method: 'GET',

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

# You can also use wget
curl -X GET https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIdentifier}/backup \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

GET /casp/api/v1.0/mng/vaults/{vaultId}/coins/{coinType}/accounts/{accountIdentifier}/backup

Get backup for BIP44 account.

This endpoint is only functional if you generated a BIP44 vault.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
coinType path integer(int32) true Coin type
accountIdentifier path string true Account identifier, which can be the index or the name

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK BackupData
400 Bad Request Incorrect vault type CASPErrorResponse
404 Not Found Vault not found CASPErrorResponse
500 Internal Server Error Get account backup failed CASPErrorResponse

Derive a key in a vault

Code samples

const inputBody = '{
  "pathToDeriveFrom": "string",
  "hardDerivation": true,
  "childIndex": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/derivations',
{
  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 https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/derivations \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

POST /casp/api/v1.0/mng/vaults/{vaultId}/derivations

This endpoint is only functional if you generated a BIP32 vault.

Body parameter

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

Parameters

Name In Type Required Description
vaultId path string true Vault ID
encoding query string false Key encoding
body body DeriveBip32KeypairRequest true Derive a keypair in a vault

Enumerated Values

Parameter Value
encoding DER
encoding compressed
encoding uncompressed
encoding plain

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK GetBip32KeyResponse
400 Bad Request Bad request CASPErrorResponse
404 Not Found Item not found CASPErrorResponse
500 Internal Server Error Add participant failed CASPErrorResponse

List all keys in a vault

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/derivations',
{
  method: 'GET',

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

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

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

This endpoint is only functional if you generated a BIP32 vault.

Note: If the parameters skip and limit are not specified or both are set to 0, then the response data contains a JSON list of the items. If those parameters are set (>0), then the response data is the JSON object shown here.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
encoding query string false Key encoding
skip query integer(int32) false The number of results to skip from the beginning of the results
limit query integer(int32) false The maximum number of results to return

Enumerated Values

Parameter Value
encoding DER
encoding compressed
encoding uncompressed
encoding plain

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK ListResponseBip32Keys
400 Bad Request Bad request CASPErrorResponse
404 Not Found Item not found CASPErrorResponse
500 Internal Server Error Add participant failed CASPErrorResponse

Get public key by derivation path

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/derivation?derivationPath=string',
{
  method: 'GET',

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

# You can also use wget
curl -X GET https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/derivation?derivationPath=string \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer API_KEY'

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

This endpoint is only functional if you generated a BIP32 vault.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
derivationPath query string true Derivation path
encoding query string false Key encoding

Enumerated Values

Parameter Value
encoding DER
encoding compressed
encoding uncompressed
encoding plain

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK GetBip32KeyResponse
400 Bad Request Bad request CASPErrorResponse
404 Not Found Item not found CASPErrorResponse
500 Internal Server Error Get derivation failed CASPErrorResponse

Get backup data for public key

Code samples


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

};

fetch('https://casp-server/casp/api/v1.0/mng/vaults/{vaultId}/backup/{publicKey}',
{
  method: 'GET',

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

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

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

The vault cryptographic material is backed up with a key that is external to the CASP system. The backup can be used for safe recovery of the vault in case of service failure, participants losing their shares, or termination of CASP usage.

This endpoint is only functional if you generated a BIP32 vault.

Parameters

Name In Type Required Description
vaultId path string true Vault ID
publicKey path string true public key

Example responses

200 Response

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

Responses

Status Meaning Description Schema
200 OK OK BackupData
400 Bad Request Incorrect vault type CASPErrorResponse
404 Not Found Vault not found CASPErrorResponse
500 Internal Server Error Get vault backup data 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

AttributeTemplateDetails

{
  "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

AttributeTemplateGroupDetails

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

Properties

Name Type Required Restrictions Description
id string false none none
description string false none none
attributeTemplateDetails [AttributeTemplateDetails] 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

CollectedData

{
  "dataCollectorDetails": {
    "id": "string",
    "name": "string",
    "state": "string",
    "description": "string",
    "creationTime": "string",
    "modificationTime": "string",
    "authenticationKey": "string",
    "attributeTemplateGroup": {
      "id": "string",
      "description": "string",
      "attributeTemplateDetails": [
        {
          "id": "string",
          "description": "string",
          "type": "string",
          "range": {
            "min": "string",
            "max": "string"
          }
        }
      ]
    },
    "activationCode": "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

CollectedDataGroupsDetails

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

Properties

Name Type Required Restrictions Description
collectionComplete boolean false none none
dataCollectionGroups [DataCollectionGroup] 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
    }
  ],
  "incomingTransactionVault": true,
  "incomingTransactionVaultId": "string"
}

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
incomingTransactionVault boolean false none Is the vault used for singing incoming transactions
incomingTransactionVaultId string false none vault ID which would be used for singing incoming transactions

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

DataCollectionGroup

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

Properties

Name Type Required Restrictions Description
minimumRequired integer(int32) false none none
collectedData [CollectedData] false none none
name string false none none

DataCollectorDetails

{
  "id": "string",
  "name": "string",
  "state": "string",
  "description": "string",
  "creationTime": "string",
  "modificationTime": "string",
  "authenticationKey": "string",
  "attributeTemplateGroup": {
    "id": "string",
    "description": "string",
    "attributeTemplateDetails": [
      {
        "id": "string",
        "description": "string",
        "type": "string",
        "range": {
          "min": "string",
          "max": "string"
        }
      }
    ]
  },
  "activationCode": "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
creationTime string false none none
modificationTime string false none none
authenticationKey string false none none
attributeTemplateGroup AttributeTemplateGroupDetails false none none
activationCode 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

IncomingTransactionSignRequest

{
  "callbackUrl": "string",
  "ledger": "string",
  "rawTransactions": [
    "string"
  ],
  "description": "string"
}

Properties

Name Type Required Restrictions Description
callbackUrl string false none Callback URL
ledger string false none Ledger
rawTransactions [string] true none Raw transactions
description string true none description

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 [AttributeTemplateDetails] 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",
  "approver": true,
  "admin": 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
approver boolean false none Participant has approver capabilities
admin boolean false none Participant has authentication 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",
              "creationTime": "string",
              "modificationTime": "string",
              "authenticationKey": "string",
              "attributeTemplateGroup": {
                "id": "string",
                "description": "string",
                "attributeTemplateDetails": [
                  {
                    "id": "string",
                    "description": "string",
                    "type": "string",
                    "range": {}
                  }
                ]
              },
              "activationCode": "string"
            },
            "data": {
              "property1": "string",
              "property2": "string"
            },
            "collectionDone": true,
            "signedUniqueData": "string",
            "collectionStart": 0,
            "collectionEnd": 0
          }
        ],
        "name": "string"
      }
    ]
  },
  "vaultAttributes": {
    "property1": "string",
    "property2": "string"
  }
}

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
vaultAttributes object false none Vault`s attributes
» additionalProperties string 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",
  "incomingTransactionVault": true,
  "incomingTransactionVaultId": "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
incomingTransactionVault boolean false none Is vault used for incoming transaction approval
incomingTransactionVaultId string false none vault ID that would be used for incoming transaction approval

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