API description

This API is designed for provide following interaction:

Request is just a usual GET request on localhost:8045

Contents:

Request types

Request structure:

Request Name
function (parameters)
request description

1. Connect

After successful connection you will receive a unique ID, which will be used in any request.               

Important

ID is given during the GUI or Wallet session. Upon restarting one of these, you have to execute “Connect()” again for work with WEB API.

2. GetNetworks  

  • GetNetworks (id) get network list

3. GetWallets

  • GetWallets (id) get wallets list

Request example on VUE:

async GetWallets() {
      try {
        const response = await axios.get(this.engineUrl, 
        {
          params: 
          {
            method: 'GetWallets',
            id: this.id
          }
        })
        this.getWalletsData = response.data
      } catch(error) 
      {
        console.log(error)
      }
    }

4. GetDataWallet

  • GetDataWallet (id,walletName) get data (balance, networks, addresses, token tickers) from the specified wallet
walletName - name of the wallet

5. SendTransaction

  • SendTransaction (id, net, walletName, toAddr, tokenName, value) execute transaction
net - name of the network
walletName - name of the wallet
toAddr - address of the wallet for coin transfer
tokenName - name of the token
value - quantity of coins in datoshi (token *10^18)

6. GetTransactions

  • GetTransactions (id, addr, net) get transaction history for every wallet in the specified network
 addr - address of the wallet
 net - name of the network

7. TxCreateJson

  • TxCreateJson (id, json) create custom transaction from JSON.file with arbitrary parameters

JSON file is created corresponding to JSON structure in the Application

8. GetLedgerTxHash

  • GetLedgerTxHash (id, hashTx, net) get information about specified transaction in the ledger
hashTx- hash of the transaction
net - name of the network

9. GetCertificates

  • GetCertificates(id, categoryCert) get certificates list
categoryCert - private\public\all

10. CreateCertificate

  • CreateCertificate(id, certType, certName, categoryCert) create certificate with specified name and type
certType - sig_dil\sig_bliss\sig_picnic (sig_dil is by default)
categoryCert - private\public

11. StakeLockTake

  • StakeLockTake(id, walletName, net, hashTx) get stacked coins
walletName - name of the wallet
net - name of the network
hashTx - hash of the transaction

12. StakeLockHold

  • StakeLockHold(id, tokenName, walletName, timeStaking,net, value, reinvest, stakeNoBaseFlag) create staking transaction
tokenName - name of the token
timeStaking - time until unstaking (YYMMDD) 
value - coins value for staking 
reinvest - percent of reward reinvesting
stakeNoBaseFlag - without base transaction - "1", with base transaction - ""

13. GetMempoolList

  • GetMempoolList (net) get Mempool list on the specified network
net - name of the network
addr - datums in the mempool which are connected to specified wallet (optional)
chain - name of the chain - main\zerochain (optional)

14. GetMempoolTxHash

  • GetMempoolTxHash(net, hashTx get information about transaction presence in the mempool of the specified network
hashTx - hash of the transaction
net - name of the network

15. CondTxCreate

  • CondTxCreate(id,net, tokenName, walletName, certName, value, unit, srv_uid) create custom transaction for node services payment
net - name of the network 
tokenName - name of the token
walletName - name of the wallet which is used for payment
certName - name of the public certificate
value - quantity of coins for payment
unit - type of service unit - mb\kb\b\sec\day (mb is by default)
srv_uid - UID of the service (1 is for VPN service)

Request example:

http://127.0.0.1:8045/?method=CondTxCreate
&id=0x95480E0CDD1B6F64EEB858876E25352B10BE32258C38AC77BC8F06FBAA3E1EF1
&net=kelvpn-minkowski
&tokenName=tKEL
&walletName=mywallet
&certName=myCert_public
&value=1
&unit=day
&srv_uid=1

16. GetOrdersList

  • GetOrdersList(id, net, direction, srv_uid, unit, tokenName, price_min, price_max) get orders full list or using filtration by parameters
net - name of the network 
direction - type of exchange - sell\buy (optional)
price_min - minimum value of order in datoshi (optional)
price_max - maximum value of order in datoshi (optional)
tokenName - name of the token (optional)
 
unit - type of the service unit (optional):          
SERV_UNIT_UNDEFINED = 0 ,
SERV_UNIT_MB = 1, // megabytes
SERV_UNIT_SEC = 2, // seconds
SERV_UNIT_DAY = 3, // days
SERV_UNIT_KB = 10, // kilobytes
SERV_UNIT_B = 11, // bytes
SERV_UNIT_PCS = 22 // pieces
 
srv_uid - UID of the service (1 is for VPN service) (optional)

17. CreateOrder

  • CreateOrder(id, net, direction, srv_uid, value, unit, tokenName, certName, addr, hashTx, expires, ext, region, continent) create order for node services payment
net - name of the network
direction - type of exchange (sell \ buy)  
value - cost of order in datoshi
certName - name of the certificate
tokenName - name of the token
addr - address of the node (optional)
hashTx - hash of the conditional transaction applied to order (optional)
expires - Unix time which shows when order expires (in seconds) (optional)
ext - extended custom parameters (string) (optional)
 
region - region (country) (optional)
continent - name of the continent where node is located (None, Africa, Europe, North America, South America, Southeast Asia, Asia, Oceania, Antarctica) (optional)
 
unit - unit type ("MB", "SEC", "DAY", "KB", "B", "PCS", MB is by default) 
srv_uid - UID of the service (1 is for VPN service) 

18. GetDexOrderList

  • GetDexOrderList(id) get list of DEX orders in all available networks

19. GetDexPairs

  • GetDexPairs(id) get list of DEX token pairs in all available networks

20. GetDexPairRate

  • GetDexPairRate(id, net, tokenFrom, tokenTo) get token rate (token buy/token sell)
net - name of the network
tokenFrom - token sell
tokenTo - token buy

21. DexOrderPurchase

  • DexOrderPurchase(id, hashTx, net, walletName, value) exchange token corresponding to specified order
hashTx - hash of the target order
net - name of the network
walletName - name of the wallet
value - amount of tokens are being exchanged

22. GetNodeStatus

  • GetNodeStatus(id) get actual node status using connection to notify socket

23. GetVersions

  • GetVersions(id) get version of wallet and node

24. NodeAdd

  • NodeAdd(id, net) add a node in the node list of the network
net - name of the network where node is registered

25. GetNodeIP

  • GetNodeIP(id, net, {addr | jsonArray}) get IP address of the node using its address in the network
net - name of the network where node is registered  
addr - address of the node in the network
jsonArray - addresses array represented as JsonArray structure 

26. NodeDump

  • NodeDump(id, net) get node description
net - name of the network

27. GetNodeNetState

  • GetNodeNetState(id, net) get network information about node
net - name of the network

28. GetFee

  • GetFee(id, net) get information about fees in the network (network fee, validator’s fee, service fee)
net - name of the network

29. GetListKeys

  • GetListKeys(id, net) get list of delegated keys in the network
net - name of the network

30. GetNetId

  • GetNetId(id, net) get network ID
net - name of the network

31. VotingCreate

  • VotingCreate (net, walletName, question, voteOptions) create poll in the Cellframe network using voting transaction
net - name of the network
walletName - name of the wallet, from which fee will be paid
question - subject of voting (string in quotes)
voteOptions - answer options (strings in quotes, divided by commas)
expire - timestamp of poll expiration (optional, time format - RCF822)
maxVotesCount - maximum votes quantity counter (optional)
delegatedKeyRequired - allows to vote only users who have a delegated key (optional)
voteChangingAllowed - allows to change previously sent answer (optional)

Request example:

http://127.0.0.1:8045/method=VotingCreate
&id=0x15EDD69D7A11E1E265C72629947F5ED4CF24AC1E3A14BCC8DAF7F48E7C62B6A8
&net=riemann
&walletName=W1
&question="question?"
&voteOptions="answer1","answer2","answer3"

32. VotingVote

  • VotingVote(net, walletName, hashTx,optionIdx) vote for chosen answer
net - name of the network
walletName - name of the wallet, from which fee will be paid 
hashTx - hash of the voting transaction
optionIdx - index of answer option (counts from 0)
certName - name of the certificate for signing poll's result (optional)

Request example:

http://127.0.0.1:8045/method=VotingVote
&id=0xEDE916186BE739765402192B27E73159461AF33CC0788896D160CB9F349F1F77
&net=riemann
&walletName=W1
&hashTx=0x70920848EA94F08D60376775AEED233B64665B42DE1937FEA926513C1990E79D
&optionIdx=2

33. VotingList

  • VotingList (net) get list of actual polls in the network
net - name of the network

Request example:

http://127.0.0.1:8045/?method=VotingList
&id=0xEDE916186BE739765402192B27E73159461AF33CC0788896D160CB9F349F1F77
&net=riemann

34. VotingDump

  • VotingDump (net, hashTx) get dump about specified poll
net - name of the network
hashTx - hash of the voting transaction

Request example:

http://127.0.0.1:8045/?method=VotingDump
&id=0x31609198E0909B2F4E93AF48DACE87E8E088C905F92F20D204AFB92CEC1F2441
&net=riemann
&hashTx=0x70920848EA94F08D60376775AEED233B64665B42DE1937FEA926513C1990E79D

35. NodeList

  • NodeList(id, net) get node list of the network
net - name of the network

RemoveItemQueue(id, idQueue, net, walletName, addParam, type) - Удаляет одну или несколько транзакций из очереди.

36. RemoveItemQueue

  • RemoveItemQueue(id, net, idQueue, type, walletName, addParam) delete one or several transactions from the queue
net - name of the network
idQueue - ID of the transaction which is generated by queue for internal usage, this parameter is necessary for single transaction deletion, but it can not be deleted if it has null position in queue (for proper usage specify parameter type=single)
 
type - (=single/all) if "all" is chosen, then all transactions will be deleted except one which has null position in the queue
 
walletName - the name of the wallet
 
addParam - (=hard) this parameter allows to delete even null transaction (optional)

37. GetQueueHash

  • GetQueueHash(id, net, idQueue, walletName) get info about transaction in the queue
net - name of the network
idQueue - ID of the transaction which is generated by queue for internal usage
walletName - the name of the wallet
 

38. CreateOrderStaker

  • CreateOrderStaker(net, walletName, value, tax) create an order that allows the staker to transfer a certain amount of m-tokens to the owner of the master node. In return, the owner of the master node delegates his private key to the staker and must also send him a percentage of future profits
net - name of the network
walletName - the name of the wallet
value - amount of m-tokens
tax - percent of profite (for example, 20.0 is 20%)

39. CreateOrderValidator

  • CreateOrderValidator(net, valueMin, valueMax, tax, certName) create a validator order that allows a machine owner who does not have m-tokens to establish a master node
net - name of the network
valueMin - minimal stake value
valueMax - maximal stake value
tax - percent of profite (for example, 20.0 is 20%)
certName - the name of the private certificate which is used for sign blocks

JSON application

Description of a command which creates transaction using JSON-file.

Command syntax:

tx_create_json 
[-net <net name>] 
[-chain <chain name>] 
-json <json file path>

Options:

-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list
-chain - the name of Chain. The list of chains can be found in the directory <Config_dir> \ etc \ network \ <network_name> or by the Cellframe-Node-CLI using command - net list chains
-json - path to json file (file.json can be situated in any folder you want)
 

Note

If the network isn’t specified, it must be in a json file. If the chain isn’t specified, then the transaction will be created in the “main” chain by default.

JSON file contains all information about transactions being created.

Example:

Command:

cellframe-node-cli tx_create_json 
-net foobar 
-chain main 
-json /root/tx.json

Response:

Transaction 0x1CF55991C6B14B30484BCE6B2E0CBFBD4A22D6000AD725213F3E5135E1FDBB95 with 4 items created and added to mempool successfully

JSON file

Format example:

{
    "chain": "main",
    "items": [
        {
            "addr_from": "Rj7J7MiX2bWy8sNybTStGPaBEJLjxMnyXJinDezXE8D5LGUmkQZSPfXHATXePY9PXi5qWo4NLRUWu89AjQ5QmEWCH1C9H7zYqceKHrTF",
            "token": "CELL",
            "type": "in"
        },
        {
            "addr": "Rj7J7MiX2bWy8sNya4sPJaQsAqhULtVZi51JFSpXKKx7B5JDjbGtXPjN943iLFJuaHe3PukbBWzUM5VSo6HQZ6DkLUvnKUQVQVjLAnum",
            "type": "out",
            "value": "1000000000000000000"
        },
        {
            "type": "sign",
            "wallet": "testwallet"
        },
        {
            "subtype": "fee",
            "type": "out_cond",
            "value": "500000000000000000"
        }
    ],
    "net": "Backbone"
}

Description

Parameters net and chain define the network and the chain where transactions will be put (net and chain have priority in the command line).

Parameter items is an array and it contains a list of transaction’s items.

type [string] defines the type of the item 
values: in, out, out_ext, sign, in_cond, out_cond, receipt

There can be many items of one type. Every item has its own additional parameters.

TYPE IN:

INPUT
 
token[string] - name of the token
 
addr_from[string] - address of the sender (is not required if there prev_hash and out_prev_idx are specified) 
 
or
 
prev_hash [string] - hash of the previous transaction 
 
and
 
out_prev_idx [int] - sequence number of output in the previous transaction 
 
If an address was specified, then hash and number are found automatically, and output item with unspent sum is created

TYPE OUT:

OUTPUT

value[string] - number of datoshi for transfer

addr[string] - address of the receiver

TYPE OUT_EXT:

OUTPUT EXTENDED

value[string] - number of datoshi for transfer

addr[string] - address of the receiver

token[string] - name of the token

TYPE SIGN:

SIGNATURE

wallet - wallet for transaction signing

cert - certificate for transaction signing

Must be specified one of the parameters, if there both wallet and certificate names are specified, then the wallet will be used

TYPE RECEIPT:

RECEIPT

value[string] - value in datoshi

unit[int] - quantity of spent units

price_unit[string] - units type (mb or sec)

service_id[int] - ID of the service

service[string] - name of the service (fee, srv_vpn, srv_xchange, srv_stake)

params[string] - additional parameters (optional)

TYPE IN_COND:

CONDITIONAL INPUT
 
token[string] - name of the token
 
receipt_idx [int] - sequence number of receipt in the transaction (is not specified if there is only one receipt in the transaction)
 
addr_from[string] - sender address (is not required if there prev_hash, out_prev_idx and receipt_idx are specified)
 
subtype [string] - subtype of the conditional output (fee, srv_pay, srv_xchange, srv_vpn)
 
prev_hash [string] - hash of the previous transaction (is not required if there address and subtype are specified)
 
out_prev_idx [int] - sequence number of the output in the previous transaction (is not required if there address and subtype are specified)
 
If address and subtype were specified, then hash and number are found automatically, and output item with unspent sum is created

TYPE OUT_COND:

CONDITIONAL OUTPUT
 
subtype [string] - defines subtype of conditional out
values: fee, srv_pay, srv_xchange, srv_stake

SUBTYPE FEE:

FEE FOR TRANSACTION PROVIDING

value[string] - fee value in datoshi

SUBTYPE SRV_PAY:

PAY 
currently, is used only for VPN service payment 

value[string] - payment value in datoshi

value_max_per_unit[string] - maximum price per one unit in datoshi

price_unit[string] - type of the unit (mb or sec)

service_id[int] - ID of the service used (if not specified, then the name of the service is being found)

service[string] - name of the service used (srv_vpn, srv_xchange, srv_stake_pos, srv_take_lock)

If the service was not specified, then srv_vpn is used by default

params[string] - additional parameters (optional)

SUBTYPE SRV_XCHANGE:

XCHANGE
currently, is used in the DEX

value[string] - payment value in datoshi

token[string] - name of the token

net[string] - name of the network

service_id[int] - ID of the service used (if not specified, then the name of the service is being found)

service[string] - name of the service used (srv_vpn, srv_xchange, srv_stake_pos, srv_take_lock)

If the service was not specified, then srv_xchange is used by default

params[string] - additional parameters (optional)

SUBTYPE SRV_STAKE_POS_DELEGATE:

DELEGATED STAKE
currently is used in the staking service

value[string] - payment value in datoshi

fee[string] - staker's fee

fee_addr[string] - address of the fee receiver

hldr_addr[string] - address of the node holder

signing_addr[string] - address of the one, who signs transaction

service_id[int] - ID of the service used (if not specified, then the name of the service is being found)

service[string] - name of the service used (srv_vpn, srv_xchange, srv_stake_pos, srv_take_lock)

If the service was not specified, then srv_stake is used by default

params[string] - additional parameters (optional)

SUBTYPE SRV_STAKE_LOCK:

STAKING LOCK
currently is used in the staking service

value[string] - payment value in datoshi

time_unlock[int] - time for the tokens to be locked on the wallet

reinvest percent[int] - percent of reinvesting funds from the staking profit

service_id[int] - ID of the service used (if not specified, then the name of the service is being found)

service[string] - name of the service used (srv_vpn, srv_xchange, srv_stake_pos, srv_take_lock)

params[string] - additional parameters (optional)

JSON file example with several items

{
  "net" : "kelvin-testnet",
  "chain" : "zerochain",
  "items" : [ {
    "type" : "in",
    "prev_hash" : "0xB5A01C52D6AFAFD4860172F4057A9BDF5E7AAB5A5AD9BE574EA919DB27EFBC0B",
    "out_prev_idx" : 2,
    "token" : "COIN"
  }, {
    "type" : "in",
    "addr_from" : "RpiDC8c1SxrTF3aSu2VL4Pwu8beWMY8ur71TeiR6ViBdnvMQCKudoWkvT8BGFN2ycKnHSaGm5WrNccex2qiZjA4PoEicUmWJNvRQQJYN",
    "token" : "COIN"
  }, {
    "type" : "out",
    "value" : "12345",
    "addr" : "RpiDC8c1SxrTF3aSu2VL4Pwu8beWMY8ur71TeiR6ViBdnvMQCKudoWkvT8BGFN2ycKnHSaGm5WrNccex2qiZjA4PoEicUmWJNvRQQJYN",
    "token" : "COIN"
  }, {
    "type" : "out_ext",
    "value" : "100000000000",
    "addr_from" : "RpiDC8c1SxrTF3aSteGk3THSTbS7MYfNLsYKqUsKn9NpeHQ4mVuTB4w4NHKp4qGFH71vXXSFTbJgjDGvyyS3zAtMwjyy33WVtALJW52Z",
    "token" : "COIN"
  }, {
    "type" : "receipt",
    "value" : "1000",
    "units" : 50,
    "price_unit" : "sec",
    "service" : "srv_stake",
    "params" : "add parameters"
  }, {
    "type" : "in_cond",
    "prev_hash" : "0xE48B9C5BA30AD8E79525C3E1101EC5D6BE0837E1E44E1C8BA6D3C7B9CD077890",
    "out_prev_idx" : 2,
    "receipt_idx" : 0
  }, {
    "type" : "in_cond",
    "subtype" : "srv_pay",
    "addr_from" : "RpiDC8c1SxrTF3aSteGk3THSTbS7MYfNLsYKqUsKn9NpeHQ4mVuTB4w4NHKp4qGFH71vXXSFTbJgjDGvyyS3zAtMwjyy33WVtALJW52Z",
    "token" : "COIN"
  }, {
    "type" : "out_cond",
    "subtype" : "fee",
    "value" : "100000000000"
  }, {
    "type" : "out_cond",
    "subtype" : "srv_pay",
    "value" : "1000",
    "value_max_per_unit" : "100000",
    "price_unit" : "sec",
    "service_id" : 1,
    "service" : "srv_vpn",
    "params" : "add parameters"
  }, {
    "type" : "out_cond",
    "subtype" : "srv_xchange",
    "net" : "kelvin-testnet",
    "service" : "srv_xchange",
    "token" : "COIN",
    "value" : "10000",
    "params" : "add parameters"
  }, {
    "type" : "out_cond",
    "subtype" : "srv_stake",
    "service" : "srv_xchange",
    "value" : "1230000000",
    "fee" : "1000",
    "fee_addr" : "RpiDC8c1SxrTF3aStZGbD94opb1SaJHAfkvcASyHz9DTrDs739WfvjJDLLGsvHJr8jb7tyiFkasuMFCgx1kjbXEFLV3G7YFQGV5ubaJK",
    "hldr_addr" : "RpiDC8c1SxrTF3aSteGk3THSTbS7MYfNLsYKqUsKn9NpeHQ4mVuTB4w4NHKp4qGFH71vXXSFTbJgjDGvyyS3zAtMwjyy33WVtALJW52Z",
    "signing_addr" : "RpiDC8c1SxrTF3aSteGk3THSTbS7MYfNLsYKqUsKn9NpeHQ4mVuTB4w4NHKp4qGFH71vXXSFTbJgjDGvyyS3zAtMwjyy33WVtALJW52Z",
    "node_addr" : "F2F1::AC00::0000::0001",
    "params" : "add parameters"
  }, {
    "type" : "sign",
    "wallet" : "myk",
  }, {
    "type" : "sign",
    "cert" : "mypvt"
  } ]
}