Public Wallet API Reference
This website documents the public API for PlasmaPay Public Wallet
You can view code examples in the dark area to the right; switch the programming language of the examples with the tabs in the top right.
Webhook
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/webhooks'
POST 'https://app.plasmapay.com/business/api/v1/wallet/webhooks'
DELETE 'https://app.plasmapay.com/business/api/v1/wallet/webhooks'
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/webhooks'
POST 'https://app.plasmapay.com/business/api/v1/wallet/webhooks'
DELETE 'https://app.plasmapay.com/business/api/v1/wallet/webhooks'
GET /webhooks
Get all webhooks
curl
-X GET
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/webhooks
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/webhooks',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
[{
"id": "{ID}",
"username": "{USERNAME}",
"url": "{URL}",
}]
In order to get all webhooks from the server you must make a GET request to
GET https://app.plasmapay.com/business/api/v1/wallet/webhooks
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
EXAMPLE REQUEST
GET https://app.plasmapay.com/business/api/v1/wallet/webhooks
EXAMPLE RESPONSE
[{
"id": "5d2ea0dea7f3cd480a973b5e",
"username": "testusername",
"url": "https://your-site.com/webhook/test",
}]
POST /webhooks
Create a webhook by sending data via post
curl
-X POST
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/webhooks
-d '{"username": "{USERNAME}", "url": "{URL}" }'
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/webhooks',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: {
"username": "{USERNAME}",
"url": "{URL}"
}
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
"id": "{ID}",
"username": "{USERNAME}",
"url": "{URL}",
}
In order to create a new webhook on the server you must make a POST request to
POST https://app.plasmapay.com/business/api/v1/wallet/webhooks
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
Parameter | Meaning |
---|---|
Plasma network account (required) | |
URL for webhooks sending (required) |
EXAMPLE REQUEST
POST https://app.plasmapay.com/business/api/v1/wallet/webhooks
{
"username": "testaccount",
"url": "https://site.com/test"
}
EXAMPLE RESPONSE
{
"id": "5d2ea0dea7f3cd480a973b5e",
"username": "testusername",
"url": "https://your-site.com/webhook/test",
}
Receiving data via webhooks
POST to provided url
After setting new webhook you will be available to receive 3 types of events about transactions from plasma blockchain:
1. New Plasma transaction (pending state)
EXAMPLE BODY 1
{
"eventType": "new",
"tx": {
"type": "withdraw",
"from": "testacc22222",
"to": "plasma.coin",
"quantity": 0.9999,
"currency": "RUBP",
"actionId": "b4ca93c86297d983f1c156882439fa156c26fdc7ec35956735b7fbf44dfa2de1",
"fee": {
"quantity": 0.0001,
"currency": "RUBP"
},
"blockNum": 21643484,
"timestamp": "2019-10-01T12:51:16.000",
"blockId": "014a40dcb8aea7bb0e2e47fccde0cf0eb50619b0baa0c38c3da22a5a034b6b74",
"mainAction": {
"actionId": "1e0d89edf2bc33f29f8554751f1bf9bbe1e5e95cef123f1fe2a5d2da521be40a",
"name": "withdraw",
"account": "rubp",
"data": {
"account": "testacc22222",
"quantity": "1000000000000000000",
"paySysCms": 0
},
"txId": "ceb8c5a1f94dc3fea09aa0f05ed7fdcbad46365728ed5d748fb6ba11756120f6"
"console": " Taking fee from amount 1.000000000000000000 RUBP. Converted to 0.020932000000000000 PLASMA from 1.000000000000000000 RUBP mult 20932 div 1000000. Fee is 1/100 % - 0.000100000000000000 RUBP. Fee is 1/100 % - 0.000002093200000000 PLASMA. Calculated fee amount is 0.000100000000000000 RUBP.",
"actors": [
"testacc22222"
]
}
}
}
Where tx.type can be one of these options: 'withdraw', 'transfer', 'newaccount', 'permissions', 'issue', 'exchange'
tx.tx contains all the data about transaction in blockchain network
2. Confirmation of Plasma transaction (success state)
EXAMPLE BODY 2
{
"eventType": "confirm",
"tx": {
"type": "withdraw",
"from": "testacc22222",
"to": "plasma.coin",
"quantity": 0.9999,
"currency": "RUBP",
"actionId": "b4ca93c86297d983f1c156882439fa156c26fdc7ec35956735b7fbf44dfa2de1",
"fee": {
"quantity": 0.0001,
"currency": "RUBP"
},
"blockNum": 21643484,
"timestamp": "2019-10-01T12:51:16.000",
"blockId": "014a40dcb8aea7bb0e2e47fccde0cf0eb50619b0baa0c38c3da22a5a034b6b74",
"mainAction": {
"actionId": "1e0d89edf2bc33f29f8554751f1bf9bbe1e5e95cef123f1fe2a5d2da521be40a",
"name": "withdraw",
"account": "rubp",
"data": {
"account": "testacc22222",
"quantity": "1000000000000000000",
"paySysCms": 0
},
"txId": "ceb8c5a1f94dc3fea09aa0f05ed7fdcbad46365728ed5d748fb6ba11756120f6"
"console": " Taking fee from amount 1.000000000000000000 RUBP. Converted to 0.020932000000000000 PLASMA from 1.000000000000000000 RUBP mult 20932 div 1000000. Fee is 1/100 % - 0.000100000000000000 RUBP. Fee is 1/100 % - 0.000002093200000000 PLASMA. Calculated fee amount is 0.000100000000000000 RUBP.",
"actors": [
"testacc22222"
]
}
}
}
3. Cancelling of Plasma transaction (canceled state)
EXAMPLE BODY 3
{
"eventType": "cancel",
"tx": {
"type": "withdraw",
"from": "testacc22222",
"to": "plasma.coin",
"quantity": 0.9999,
"currency": "RUBP",
"actionId": "b4ca93c86297d983f1c156882439fa156c26fdc7ec35956735b7fbf44dfa2de1",
"fee": {
"quantity": 0.0001,
"currency": "RUBP"
},
"blockNum": 21643484,
"timestamp": "2019-10-01T12:51:16.000",
"blockId": "014a40dcb8aea7bb0e2e47fccde0cf0eb50619b0baa0c38c3da22a5a034b6b74",
"mainAction": {
"actionId": "1e0d89edf2bc33f29f8554751f1bf9bbe1e5e95cef123f1fe2a5d2da521be40a",
"name": "withdraw",
"account": "rubp",
"data": {
"account": "testacc22222",
"quantity": "1000000000000000000",
"paySysCms": 0
},
"txId": "ceb8c5a1f94dc3fea09aa0f05ed7fdcbad46365728ed5d748fb6ba11756120f6"
"console": " Taking fee from amount 1.000000000000000000 RUBP. Converted to 0.020932000000000000 PLASMA from 1.000000000000000000 RUBP mult 20932 div 1000000. Fee is 1/100 % - 0.000100000000000000 RUBP. Fee is 1/100 % - 0.000002093200000000 PLASMA. Calculated fee amount is 0.000100000000000000 RUBP.",
"actors": [
"testacc22222"
]
}
}
}
DELETE /webhooks/{id}
Delete a webhook by sending data via delete
curl
-X DELETE
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/webhooks/{id}
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/webhooks/{id}',
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
success: {SUCCESS}
}
In order to delete a webhook on the server you must make a DELETE request to
DELETE https://app.plasmapay.com/business/api/v1/wallet/webhooks/{id}
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
EXAMPLE REQUEST
DELETE https://app.plasmapay.com/business/api/v1/wallet/webhooks?id=5d2ea0dea7f3cd480a973b5e
EXAMPLE RESPONSE
{
"success": true
}
Rates
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/rates/{pair}'
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/rates/{pair}'
GET /rates/{pair}
Get rate of one currency to another
curl
-X GET
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/rates/{pair}
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/rates/{pair}',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
"pair": "{PAIR}",
"rate": "{RATE}",
}
In order to get rates from the server you must make a GET request to
GET https://app.plasmapay.com/business/api/v1/wallet/rates/{pair}
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
Available pairs are: ETHP-USDP, UAHP-USDP, VETP-USDP, ZECP-USDP, EURP-USDP, KESP-USDP, RUBP-USDP, BSVP-USDP, ADAP-USDP, JPYP-USDP, GBPP-USDP, TRXP-USDP, PLNP-USDP, MYRP-USDP, NOKP-USDP, BRLP-USDP, ARSP-USDP, IDRP-USDP, SEKP-USDP, NGNP-USDP, EOSP-USDP, XRPP-USDP, HUFP-USDP, CHFP-USDP, DKKP-USDP, USDP-USDP, TWDP-USDP, SDRC-USDP, AMDP-USDP, ONTP-USDP, XMRP-USDP, CNYP-USDP, BYNP-USDP, THBP-USDP, PHPP-USDP, CADP-USDP, ETCP-USDP, HKDP-USDP, TRYP-USDP, MXNP-USDP, OMRP-USDP, KRWP-USDP, ZARP-USDP, CZKP-USDP, LTCP-USDP, BCHP-USDP, INRP-USDP, PKRP-USDP, VNDP-USDP, NEOP-USDP, DASHP-USDP, XTZP-USDP, PLASMA-USDP, BTCP-USDP, KZTP-USDP, NZDP-USDP, AUDP-USDP, SGDP-USDP, XLMP-USDP, AZNP-USDP, SDRF-USDP, CLPP-USDP, XEMP-USDP, ILSP-USDP
EXAMPLE REQUEST
GET https://app.plasmapay.com/business/api/v1/wallet/rates/PLASMA-USDP
EXAMPLE RESPONSE
{
"pair": "PLASMA-USDP",
"rate": "1.1",
}
Fees
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/fees/{tokenCode}'
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/fees/{tokenCode}'
GET /fees/{tokenCode}
Get fees from plasma blockchain network
curl
-X GET
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/fees/{tokenCode}
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/fees/{tokenCode}',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
"plasma": {
"balance": "{BALANCE}",
"minFee": "{MINER_FEE}",
"decimals": "{DECIMALS}",
"currencyRate": "{CURRENCY_RATE}",
"feePercents": "{FEE_PERCENTS}",
"exchangeFeePercents": "{EXCHANGE_FEE_PERCENTS}"
},
"currency": {
"balance": "{BALANCE}",
"minFee": "{MINER_FEE}",
"decimals": "{DECIMALS}",
"currencyRate": "{CURRENCY_RATE}",
"feePercents": "{FEE_PERCENTS}",
"exchangeFeePercents": "{EXCHANGE_FEE_PERCENTS}"
}
}
In order to get fees from the server you must make a GET request to
GET https://app.plasmapay.com/business/api/v1/wallet/fees/{tokenCode}
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
Available tokenCodes are: "UAHP", "AMDP", "ARSP", "AUDP", "AZNP", "BRLP", "BYNP", "CADP", "CHFP", "CLPP", "CNYP", "CZKP", "DKKP", "EURP", "GBPP", "HKDP", "HUFP", "IDRP", "ILSP", "INRP", "JPYP", "KESP", "KRWP", "KZTP", "MXNP", "MYRP", "NGNP", "NOKP", "NZDP", "OMRP", "PHPP", "PKRP", "PLNP", "RUBP", "SEKP", "SGDP", "THBP", "TRYP", "TWDP", "USDP", "VNDP", "ZARP"
EXAMPLE REQUEST
GET https://app.plasmapay.com/business/api/v1/wallet/fees/RUBP
EXAMPLE RESPONSE
{
"plasma": {
"balance": "0",
"minFee": 1,
"decimals": 18,
"currencyRate": 49.345366,
"feePercents": 0.00005,
"exchangeFeePercents": 0.001
},
"currency": {
"balance": "500000000000000000000",
"minFee": 1,
"plasmaRate": 0.020265,
"decimals": 18,
"feePercents": 0.0001,
"exchangeFeePercents": 0.001
}
}
Accounts
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/accounts/{account}/available'
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/accounts/{account}/available'
GET /accounts/{account}/available
Check if account exist and available in the plasma blockchain network
curl
-X GET
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/accounts/{account}/available
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/accounts/{account}/available',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
"available": "{AVAILABLE}"
}
In order to check if account exist and available from the server you must make a GET request to
GET https://app.plasmapay.com/business/api/v1/wallet/accounts/{account}/available
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
EXAMPLE REQUEST
GET https://app.plasmapay.com/business/api/v1/wallet/accounts/testaccount/available
EXAMPLE RESPONSE
{
"available": true
}
Balances
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/balances/{username}'
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/balances/{username}'
GET /balances/{username}
Get balances for plasma account
curl
-X GET
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/balances/{username}
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/balances/{username}',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
[{
"account": "{ACCOUNT}",
"balance": "{BALANCE}",
}]
In order to get balances from the server you must make a GET request to
GET https://app.plasmapay.com/business/api/v1/wallet/balances/{username}
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
EXAMPLE REQUEST
GET https://app.plasmapay.com/business/api/v1/wallet/balances/testaccount
EXAMPLE RESPONSE
[
{
"account": "testaccount",
"balance": 200,
"currency": "RUBP"
},
{
"account": "testaccount",
"balance": 3,
"currency": "USDP"
}
]
Transactions
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/transactions/{txId}'
POST 'https://app.plasmapay.com/business/api/v1/wallet/transactions'
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/transactions/{txId}'
POST 'https://app.plasmapay.com/business/api/v1/wallet/transactions'
GET /transactions/{txId}
Get transaction details from blockchain by hash (txId)
curl
-X GET
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/transactions/{txId}
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/transactions/{txId}',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
"id": "{ID}",
"blockNum": "{BLOCK_NUM}",
"blockTime": "{BLOCK_TIME}",
"blockId": "{BLOCK_ID}",
"actions": "{ACTIONS}"
"events": "{EVENTS}"
"legacyEvents": "{LEGACY_EVENTS}"
}
You can pass query parameter ?needRaw=1
to get raw transaction object.
In this query you should use hash of transaction as txId parameter. You can get hash (txId) of created transactions in other transaction routes by using referenceId field in response.
In order to get transaction from the server you must make a GET request to
GET https://app.plasmapay.com/business/api/v1/wallet/transactions/{txId}
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
EXAMPLE REQUEST
GET https://app.plasmapay.com/business/api/v1/wallet/transactions/c0d0039ab93284389e2cbbc47ebe21d9effe1a0eb1249f822a44cd6ecd94e18a
EXAMPLE RESPONSE
{
"id": "c0d0039ab93284389e2cbbc47ebe21d9effe1a0eb1249f822a44cd6ecd94e18a",
"blockNum": 12183438,
"blockTime": "2019-08-07T13:29:05.000",
"blockId": "00b9e78e8cf17c4e5896dcb580664e2065bda48b4a35f929129dfb7d73cff053",
"actions": [
{
"actionId": "321bb8fd4476c6a25870ee9892e6add18ebfe60d2a508eb9069fe92733196e5c",
"name": "issue",
"account": "rubp",
"data": {
"to": "testaccount",
"quantity": "50000000000000000000",
"paySysCms": 0,
"memo": ""
},
"console": "",
"actors": [
"plasma.coin"
],
"subactions": [
{
"actionId": "93863bbde210a10faf49e58b871cf7265fb64e7bebccbc68269eff4e37823079",
"name": "issue",
"account": "plasma.token",
"data": {
"to": "testaccount",
"quantity": "50.000000000000000000 RUBP",
"memo": ""
},
"console": "",
"actors": [
"plasma.coin"
],
"subactions": [],
"events": []
}
],
"events": [
{
"type": "issue",
"from": "plasma.token",
"to": "testaccount",
"quantity": 50,
"currency": "RUBP",
"actionId": "93863bbde210a10faf49e58b871cf7265fb64e7bebccbc68269eff4e37823079",
"fee": {
"quantity": 0,
"currency": "PLASMA"
}
}
]
}
],
"events": [
{
"type": "issue",
"from": "plasma.token",
"to": "testaccount",
"quantity": 50,
"currency": "RUBP",
"actionId": "93863bbde210a10faf49e58b871cf7265fb64e7bebccbc68269eff4e37823079",
"fee": {
"quantity": 0,
"currency": "PLASMA"
},
"mainAction": {
"actionId": "321bb8fd4476c6a25870ee9892e6add18ebfe60d2a508eb9069fe92733196e5c",
"name": "issue",
"account": "rubp",
"data": {
"to": "testaccount",
"quantity": "50000000000000000000",
"paySysCms": 0,
"memo": ""
},
"console": "",
"actors": [
"plasma.coin"
]
},
"blockNum": 12183438,
"timestamp": "2019-08-07T13:29:05.000",
"blockId": "00b9e78e8cf17c4e5896dcb580664e2065bda48b4a35f929129dfb7d73cff053",
"txId": "c0d0039ab93284389e2cbbc47ebe21d9effe1a0eb1249f822a44cd6ecd94e18a"
}
],
"legacyEvents": [
{
"type": "issue",
"from": "plasma.token",
"to": "testaccount",
"currency": "RUBP",
"actionNum": 0,
"txId": "c0d0039ab93284389e2cbbc47ebe21d9effe1a0eb1249f822a44cd6ecd94e18a",
"blockNum": 12183438,
"blockId": "00b9e78e8cf17c4e5896dcb580664e2065bda48b4a35f929129dfb7d73cff053",
"timestamp": "2019-08-07T13:29:05.000",
"feePlasma": 0,
"feeCurrency": 0,
"quantity": 50
}
]
}
POST /transactions
Create new transaction in plasma for money transfer
curl
-X POST
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/transactions
-d '{"amount": "{AMOUNT}", "address": "{ADDRESS}", "note": "{NOTE}", "feePayer": "{FEE_PAYER}", "tokenCode": "{TOKEN_CODE}" }'
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/transactions',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: {
"amount": "{AMOUNT}",
"address": "{ADDRESS}"
"note": "{NOTE}"
"feePayer": "{FEE_PAYER}"
"tokenCode": "{TOKEN_CODE}"
}
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
"id": "{ID}",
"amount": "{AMOUNT}",
"processedAmount": "{PROCESSED_AMOUNT}",
"currencyCode": "{CURRENCY_CODE}",
"state": "{STATE}",
"type": "{TYPE}",
"isSmart": "{IS_SMART}",
"createdAt": "{CREATED_AT}",
"priority": "{PRIORITY}",
"feePayer": "{FEE_PAYER}",
"minerFeeAmount": "{MINER_FEE_AMOUNT}",
"plasmaFeeAmount": "{PLASMA_FEE_AMOUNT}",
"toAddress": "{TO_ADDRESS}",
"withdrawal": "{WITHDRAWAL}",
"link": "{LINK}",
"confirmations": "{CONFIRMATIONS}",
"tokensAmount": "{TOKENS_AMOUNT}",
"tokenSymbol": "{TOKEN_SYMBOL}",
"plasmaFeeTokensAmount": "{PLASMA_FEE_TOKENS_AMOUNT}",
"instruction": {
"id": "{ID}",
"amount": "{AMOUNT}",
"currencyCode": "{CURRENCY_CODE}",
"state": "{STATE}",
"type": "{TYPE}",
"note": "{NOTE}",
"contactId": "{CONTACT_ID}",
"createdAt": "{CREATED_AT}",
"extendedData": "{EXTENDED_DATA}"
},
"toWallet": null,
"wallet": {
"id": "{ID}",
"type": "{TYPE}",
"currencyCode": "{CURRENCY_CODE}",
"networkType": "{NETWORK_TYPE}",
"username": "{USERNAME}"
}
}
In order to create new plasma transaction on the server you must make a POST request to
POST https://app.plasmapay.com/business/api/v1/wallet/transactions
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
Parameter | Meaning |
---|---|
Amount of transaction (required) | |
Plasma network Address (account) for receiving amount (required) | |
Payer of fees: "myself" or "receiver" (required) | |
Note for transfer | |
Token code (USDP, EURP, RUBP, etc.). PLASMA will be used if this parameter is not passed |
EXAMPLE REQUEST
POST https://app.plasmapay.com/business/api/v1/wallet/transactions
{
"amount": "2",
"address": "testaccount"
"feePayer": "myself"
"tokenCode": "USDP"
}
EXAMPLE RESPONSE
{
"id": "5d810446f15d5d4dac1c392f",
"amount": 0,
"processedAmount": 0,
"currencyCode": "PLASMA",
"state": "tmp",
"type": "debit",
"isSmart": true,
"createdAt": "2019-09-17T16:05:26.985Z",
"priority": null,
"feePayer": "myself",
"minerFeeAmount": 0,
"plasmaFeeAmount": 0,
"toAddress": "testaccount",
"withdrawal": null,
"link": "http://dlt.plasmapay.com/transactions/undefined",
"confirmations": 0,
"tokensAmount": -2,
"tokenSymbol": "USDP",
"referenceId": null,
"plasmaFeeTokensAmount": 0.0002,
"instruction": {
"id": "5d810446f15d5ddb971c392d",
"amount": 0,
"currencyCode": "PLASMA",
"state": "new",
"type": "debit",
"note": null,
"contactId": null,
"createdAt": "2019-09-17T16:05:26.975Z",
"extendedData": null
},
"toWallet": null,
"wallet": {
"id": "5d80c92ce94fb6523db9472d",
"type": "client_plasma",
"currencyCode": "PLASMA",
"networkType": "main",
"username": "testaccount"
}
}
SEND RAW POST /transactions/{id}/send-raw
Send already created transaction in plasma and signed by yourself for money transfer
curl
-X POST
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/transactions/{id}/send-raw
-d '{"rawTx": "{RAW_TX}", "signatures": "{SIGNATURES}"}'
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/transactions/{id}/send-raw',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: {
"rawTx": "{RAW_TX}",
"signatures": "{SIGNATURES}"
}
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
"id": "{ID}",
"amount": "{AMOUNT}",
"processedAmount": "{PROCESSED_AMOUNT}",
"currencyCode": "{CURRENCY_CODE}",
"state": "{STATE}",
"type": "{TYPE}",
"isSmart": "{IS_SMART}",
"createdAt": "{CREATED_AT}",
"priority": "{PRIORITY}",
"feePayer": "{FEE_PAYER}",
"minerFeeAmount": "{MINER_FEE_AMOUNT}",
"plasmaFeeAmount": "{PLASMA_FEE_AMOUNT}",
"toAddress": "{TO_ADDRESS}",
"withdrawal": "{WITHDRAWAL}",
"link": "{LINK}",
"confirmations": "{CONFIRMATIONS}",
"tokensAmount": "{TOKENS_AMOUNT}",
"tokenSymbol": "{TOKEN_SYMBOL}",
"plasmaFeeTokensAmount": "{PLASMA_FEE_TOKENS_AMOUNT}",
"instruction": {
"id": "{ID}",
"amount": "{AMOUNT}",
"currencyCode": "{CURRENCY_CODE}",
"state": "{STATE}",
"type": "{TYPE}",
"note": "{NOTE}",
"contactId": "{CONTACT_ID}",
"createdAt": "{CREATED_AT}",
"extendedData": "{EXTENDED_DATA}"
},
"toWallet": null,
"wallet": {
"id": "{ID}",
"type": "{TYPE}",
"currencyCode": "{CURRENCY_CODE}",
"networkType": "{NETWORK_TYPE}",
"username": "{USERNAME}"
}
}
In order to send already created transaction in plasma and signed by yourself you must make a POST request to
POST https://app.plasmapay.com/business/api/v1/wallet/transactions/{id}/send-raw
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
Parameter | Meaning |
---|---|
Raw string of transaction (required) | |
Signatures of signed transaction (required) |
EXAMPLE REQUEST
POST https://app.plasmapay.com/business/api/v1/wallet/transactions/{id}/send-raw
{
"rawTx": [141,237,120,93,190,127,150,63,114,92,0,0,0,0,1,0,0,0,0,0,80,19,214,0,0,0,87,45,60,205,205,1,16,66,8,33,120,197,174,194,0,0,0,0,168,237,50,50,38,16,66,8,33,120,197,174,194,96,49,198,24,99,140,42,198,19,50,48,48,48,50,48,48,48,50,48,48,48,50,48,48,48,48,48,48,0,0,3],
"signatures": "SIG_K1_KaUjYZrRtAaG95qDUK4VDV4KQYXyE9Xv4HXUX5UH15ZNBjaGY98DFq48RPN9ar4QRAdAXbYZpdcVMiQC2FLa77ZUvnh96L"
}
EXAMPLE RESPONSE
{
"id": "5d810446f15d5d4dac1c392f",
"amount": 0,
"processedAmount": 0,
"currencyCode": "PLASMA",
"state": "new",
"type": "debit",
"isSmart": true,
"createdAt": "2019-09-17T16:05:26.985Z",
"priority": null,
"feePayer": "myself",
"minerFeeAmount": 0,
"plasmaFeeAmount": 0,
"toAddress": "testaccount",
"withdrawal": null,
"link": "http://dlt.plasmapay.com/transactions/2d871y2d87128dy1827dy1827dy",
"confirmations": 0,
"tokensAmount": -2,
"referenceId": "1od87yo78yfo187fyo81",
"tokenSymbol": "USDP",
"plasmaFeeTokensAmount": 0.0002,
"instruction": {
"id": "5d810446f15d5ddb971c392d",
"amount": 0,
"currencyCode": "PLASMA",
"state": "new",
"type": "debit",
"note": null,
"contactId": null,
"createdAt": "2019-09-17T16:05:26.975Z",
"extendedData": null
},
"toWallet": null,
"wallet": {
"id": "5d80c92ce94fb6523db9472d",
"type": "client_plasma",
"currencyCode": "PLASMA",
"networkType": "main",
"username": "testaccount"
}
}
SEND POST /transactions/{id}/send
Send already created transaction in plasma to plasma blockchain network
curl
-X POST
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/transactions/{id}/send
-d '{}'
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/transactions/{id}/send',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
{
"id": "{ID}",
"amount": "{AMOUNT}",
"processedAmount": "{PROCESSED_AMOUNT}",
"currencyCode": "{CURRENCY_CODE}",
"state": "{STATE}",
"type": "{TYPE}",
"isSmart": "{IS_SMART}",
"createdAt": "{CREATED_AT}",
"priority": "{PRIORITY}",
"feePayer": "{FEE_PAYER}",
"minerFeeAmount": "{MINER_FEE_AMOUNT}",
"plasmaFeeAmount": "{PLASMA_FEE_AMOUNT}",
"toAddress": "{TO_ADDRESS}",
"withdrawal": "{WITHDRAWAL}",
"link": "{LINK}",
"confirmations": "{CONFIRMATIONS}",
"tokensAmount": "{TOKENS_AMOUNT}",
"tokenSymbol": "{TOKEN_SYMBOL}",
"plasmaFeeTokensAmount": "{PLASMA_FEE_TOKENS_AMOUNT}",
"instruction": {
"id": "{ID}",
"amount": "{AMOUNT}",
"currencyCode": "{CURRENCY_CODE}",
"state": "{STATE}",
"type": "{TYPE}",
"note": "{NOTE}",
"contactId": "{CONTACT_ID}",
"createdAt": "{CREATED_AT}",
"extendedData": "{EXTENDED_DATA}"
},
"toWallet": null,
"wallet": {
"id": "{ID}",
"type": "{TYPE}",
"currencyCode": "{CURRENCY_CODE}",
"networkType": "{NETWORK_TYPE}",
"username": "{USERNAME}"
}
}
In order to send already created plasma transaction you must make a POST request to
POST https://app.plasmapay.com/business/api/v1/wallet/transactions/{id}/send
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
EXAMPLE REQUEST
POST https://app.plasmapay.com/business/api/v1/wallet/transactions/{id}/send
EXAMPLE RESPONSE
{
"id": "5d810446f15d5d4dac1c392f",
"amount": 0,
"processedAmount": 0,
"currencyCode": "PLASMA",
"state": "new",
"type": "debit",
"isSmart": true,
"createdAt": "2019-09-17T16:05:26.985Z",
"priority": null,
"feePayer": "myself",
"minerFeeAmount": 0,
"plasmaFeeAmount": 0,
"toAddress": "testaccount",
"withdrawal": null,
"link": "http://dlt.plasmapay.com/transactions/1od87yo78yfo187fyo81",
"confirmations": 0,
"tokensAmount": -2,
"referenceId": "1od87yo78yfo187fyo81",
"tokenSymbol": "USDP",
"plasmaFeeTokensAmount": 0.0002,
"instruction": {
"id": "5d810446f15d5ddb971c392d",
"amount": 0,
"currencyCode": "PLASMA",
"state": "new",
"type": "debit",
"note": null,
"contactId": null,
"createdAt": "2019-09-17T16:05:26.975Z",
"extendedData": null
},
"toWallet": null,
"wallet": {
"id": "5d80c92ce94fb6523db9472d",
"type": "client_plasma",
"currencyCode": "PLASMA",
"networkType": "main",
"username": "testaccount"
}
}
Actions
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/actions/{username}'
ENDPOINTS:
GET 'https://app.plasmapay.com/business/api/v1/wallet/actions/{username}'
GET /actions/{username}
Get actions of plasma account
curl
-X GET
-H "Content-type: application/json"
-H "authorization: Bearer <API_KEY>"
https://app.plasmapay.com/business/api/v1/wallet/actions/{username}
var request = require('request');
const options = {
uri: 'https://app.plasmapay.com/business/api/v1/wallet/actions/{username}',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer API_KEY'
},
json: true
}
request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
// Handle body
}
});
RESPONSE
200 Ok
Content-Type: application/json
BODY
[{
"global_action_seq": "{GLOBAL_ACTION_SEQ}",
"account_action_seq": "{ACCOUNT_ACTION_SEQ}",
"block_num": "{BLOCK_NUM}",
"block_time": "{BLOCK_TIME}",
"action_trace": "{ACTION_TRACE_OBJECT}"
}]
You can pass query parameter ?offset={number}
to get result from certain position
You can pass query parameter ?limit={number}
to get specified maximum of result records
In order to get actions from the server you must make a GET request to
GET https://app.plasmapay.com/business/api/v1/wallet/actions/{username}
with the apiKey
as query
parameter or Bearer <API_KEY>
as authorization
header.
EXAMPLE REQUEST
GET https://app.plasmapay.com/business/api/v1/wallet/actions/testaccount
EXAMPLE RESPONSE
[
{
"global_action_seq": 46954394,
"account_action_seq": 1,
"block_num": 12178844,
"block_time": "2019-08-07T12:50:48.000",
"action_trace": {
"receipt": {
"receiver": "testaccount",
"act_digest": "7db68d61fe3102a5323097b08dd8acf93100974f53bcef1869b89681ea5fee02",
"global_sequence": 46954394,
"recv_sequence": 1,
"auth_sequence": [
[
"plasma.coin",
29263
]
],
"code_sequence": 10,
"abi_sequence": 3
},
"act": {
"account": "plasma.token",
"name": "issue",
"authorization": [
{
"actor": "plasma.coin",
"permission": "active"
}
],
"data": {
"to": "testaccount",
"quantity": "100.000000000000000000 RUBP",
"memo": ""
},
"hex_data": "60a699e69869a6391b3130302e303030303030303030303030303030303030205255425000"
},
"context_free": false,
"elapsed": 16,
"console": "",
"trx_id": "9e6b182e0112ec5ede6455433d81f3baa0dabd5b4d601a7d19ce7ac1885027ca",
"block_num": 12178844,
"block_time": "2019-08-07T12:50:48.000",
"producer_block_id": "00b9d59c80c4c520313c799312612dc8b9e20331e17693284ad21c8b5017abec",
"account_ram_deltas": [],
"except": null,
"inline_traces": []
}
}
]
Status codes
The PlasmaPay API uses the following error codes:
Code | Meaning |
---|---|
200 | OK Successful request |
201 | Created New object saved |
204 | No content Object deleted |
Code | Meaning |
---|---|
400 | Bad Request -- You have passed a malformed request |
401 | Unauthorized -- Your API key is incorrect |
403 | Forbidden -- The resource requested is not available with your permissions |
404 | Not Found -- The specified resource could not be found |
422 | Unprocessable Entity -- Your request is invalid |
500 | Internal Server Error -- We had a problem with our server. Try again later |
503 | Service Unavailable (Time out) -- The server is overloaded or down for maintenance |