Skip to content

API Specification

Aleksei Lebedev edited this page Sep 30, 2019 · 31 revisions

The library allows to send and retrieve transactions/messages, get other blockchain data, and decode messages.

Sync get(type, input)

Performs sync request to ADAMANT blockchain endpoints.

Parameters:

Supported endpoints (values of type parameters):

type API Request input Result
account /api/accounts?address= + [input] ADAMANT address Account's information
account_delegates /api/accounts/delegates?address= + [input] ADAMANT address Votes of specific ADAMANT account — list of delegates. Returned delegates field of result.
block /api/blocks/get?id= + [input] Block's id Full information about specific block
blocks /api/blocks + [input] Filter conditions List of blocks filtered by input. Returned blocks field of result.
states /api/states/get + [input] Filter conditions Fetch data from KVS
delegate /api/delegates/get?username= + [input] Delegate's name Information for delegete by username
delegate_voters /api/delegates/voters?publicKey= + [input] Delegate's publicKey List of delegete's voters
delegate_forged /api/delegates/forging/getForgedByAccount?generatorPublicKey= + [input] Delegate's publicKey Forging stats of delegate
transaction /api/transactions/get?id= + [input] Tx ID Transaction with specific ID
transactions /api/transactions? + [input] Filter conditions List of transactions filtered by input

Examples:

const txTrx = (await api.get(`transactions`, `fromHeight=` + (Store.lastHeight - 5) + `&and:recipientId=` + Store.user.ADM.address + `&and:type=0`)).transactions;

Any other ADAMANT endpoint can be requested — set type to uri and input to full endpoint with parameters.

Example:

const txChat = (await api.get(`uri`, `chats/get/?recipientId=` + Store.user.ADM.address + `&orderBy=timestamp:desc&fromHeight=` + (Store.lastHeight - 5))).transactions;

Get information by asynchronous request

To get information from ADAMANT blockchain without maintaining the connection you need to use syncGet.js module.

Mode: asynchronous

Module format

api.syncGet(uri, isUrl, isNoJson):

  • uri — endpoint or full url; mandatory
  • isUrl — boolen (true/false (default)); optional. In fales case you will get url as: currentNode + uri; At true case url = uri
  • isNoJson — boolen (true/false (default)); optional. In true case JSON body would be parsed

Code examples:

  1. const data = await api.syncGet(config.infoservice + `/get`, true);
  2. const resp = await api.syncGet(`/api/states/get?senderId=${admAddress}&key=${coin.toLowerCase()}:address`);

Send information

To send information to ADAMANT blockchain you need to use send.js module.

Mode: synchronous

Module format

api.send(passPhrase, address, payload, type = 'tokens', isEncode, amount_comment):

  • passPhrase — sender's passPhrase; mandatory
  • address — resipient's ADAMANT address; mandatory
  • payload — sending value; optional
  • type — type of payload: tokens (default) or message; optional
  • isEncode — mark that payment is encoded; optional
  • amount_comment — comment of payment; optional

Code examples:

  1. const result = await $u[outCurrency].send({ address: senderKvsOutAddress, value: outAmount, comment: `Hey, you are lucky! Waiting for new bets!` // if ADM }); log.info(`Reward payment result: ${JSON.stringify(result, 0, 2)}.`); const { address, value, comment } = params; console.log(`Send ${value} ADM to ${address} with comment:`, comment); let res; if (comment){ res = api.send(User.passPhrase, address, comment, `message`, null, value); } else { res = api.send(User.passPhrase, address, value, null, comment); } console.log(`Send result:`, res); if (!res) { return { success: false }; } return { success: res.success, hash: res.transactionId };

  2. sendAdmMsg(address, msg, type = `message`) { if (msg && !config.isDev || true) { try { let msg_markdown = msg.replace(/[^\*]\*[^\*]/g, `**`); return api.send(config.passPhrase, address, msg_markdown, type).success || false; } catch (e) { return false; } } },

Decode information

To decode information from ADAMANT blockchain transaction you can use decodeMsg.js module. Reed more about Encrypting and Decrypting Messages at this page

Mode: synchronous

Module format

api.decodeMsg(msg, senderPublicKey, passPhrase, nonce):

  • msg — message you need to decrypt; mandatory
  • senderPublicKey — senders' public key; mandatory
  • passPhrase — private recipint's passphrase; mandatory
  • nonce — nonce

Code examples:

  1. const chat = tx.asset.chat; if (chat){ msg = api.decodeMsg(chat.message, tx.senderPublicKey, config.passPhrase, chat.own_message).trim(); }
Clone this wiki locally