How Can We Help?
Search for answers or browse our knowledge base.
How to use the HTTP API
HTTP API
1 API Usage Guide
1.1 Request Process Overview
- Generate request data: according to the interface specification you need to generate the request with a valid JSON object. The prefered way to do this is with the @gny/client.
- Send request data: transfer the generated data to the GNY Blockchain also with @gny/client.
- GNY Blockchain handles data object: after receiving the data object, the GNY Blockchain will validate the data first and edit to a block if all checks pass.
- Return the response data: The GNY Blockchain returns the transaction id upon successful execution. See the corresponding endpoint specification for detail.
- Client handles the response data
::: tip
The @gny/client is the preferred way to communicate with the HTTP API
Head to the @gny/client documentation for details
:::
2 Interface
2.1 Accounts
2.1.1 Read Account
2.1.1.1 Read Account with PublicKey
API Endpoint: /api/accounts/openAccount
HTTP Verb: POST
Supported Format: JSON
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
publicKey | string | Y | GNY publicKey |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | Whether login is successful |
account | json | Account information |
:::: tabs
::: tab mainnet
Request Example:
curl -X POST --data "publicKey=41d36d74761593dcf1380faafcd487b84e014eba27c044d1aa87782d1cbd1a19" https://mainnet.gny.io/api/accounts/openAccount/
JSON Response Example:
{
"account": {
"address": "G2QEzc5BndQ2h6BsSNqimCWbSBV9L",
"balance": "20000000000",
"secondPublicKey": null,
"lockHeight": "0",
"lockAmount": "0",
"isDelegate": 0,
"username": null,
"publicKey": "a87c7230d9ade987dbf612605aab652667e6303d2a1c6b2ec91a13733593bb75"
},
"latestBlock": {
"height": 53,
"timestamp": 3471490
},
"version": {
"version": "1.0.0",
"build": "Sun Feb 02 2020 19:42:18 GMT+0100 (Central European Standard Time)",
"net": "mainnet"
}
}
:::
::: tab testnet
Request Example:
curl -X POST --data "publicKey=41d36d74761593dcf1380faafcd487b84e014eba27c044d1aa87782d1cbd1a19" http://localhost:4096/api/accounts/openAccount/
JSON Response Example:
{
"account": {
"address": "G2QEzc5BndQ2h6BsSNqimCWbSBV9L",
"balance": "20000000000",
"secondPublicKey": null,
"lockHeight": "0",
"lockAmount": "0",
"isDelegate": 0,
"username": null,
"publicKey": "a87c7230d9ade987dbf612605aab652667e6303d2a1c6b2ec91a13733593bb75"
},
"latestBlock": {
"height": 53,
"timestamp": 3471490
},
"version": {
"version": "1.0.0",
"build": "Sun Feb 02 2020 19:42:18 GMT+0100 (Central European Standard Time)",
"net": "testnet"
}
}
:::
::::
2.1.2 Get Account Information
API Endpoint: /api/accounts
HTTP Verb: GET
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
address | string | N | account address |
username | string | N | account username |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | whether response data can be returned |
account | json | account information |
latestBlock | json | latest block information |
version | json | version information |
:::: tabs
::: tab mainnet
Request Example (address):
curl -k -X GET https://mainnet.gny.io/api/accounts?address=G4b8BhmeRFBmWAHZemKD25BmEP2G
Request Example (username):
curl -k -X GET https://mainnet.gny.io/api/accounts?username=liangpeili
JSON Response Example (address):
{
"account": {
"address": "G3wAwmGh3rimRm9v4qjuh7RkkAebM",
"balance": 2000000000000,
"secondPublicKey": "",
"lockHeight": 0
},
"latestBlock": {
"height": 5,
"timestamp": 3472080
},
"version": {
"version": "1.0.0",
"build": "Sun Feb 02 2020 19:46:48 GMT+0100 (Central European Standard Time)",
"net": "mainnet"
}
}
JSON Response Example (username):
{
"address": "G3wAwmGh3rimRm9v4qjuh7RkkAebM",
"username": "liangpeili",
"gny": 2000000000000,
"publicKey": null,
"secondPublicKey": null,
"isDelegate": 1,
"isLocked": 0,
"lockHeight": 0,
"lockAmount": 0,
"_version_": 3
}
:::
::: tab testnet
Request Example (address):
curl -k -X GET http://localhost:4096/api/accounts?address=G4b8BhmeRFBmWAHZemKD25BmEP2G
Request Example (username):
curl -k -X GET http://localhost:4096/api/accounts?username=liangpeili
JSON Response Example (address):
{
"account": {
"address": "G3wAwmGh3rimRm9v4qjuh7RkkAebM",
"balance": 2000000000000,
"secondPublicKey": "",
"lockHeight": 0
},
"latestBlock": {
"height": 5,
"timestamp": 3472080
},
"version": {
"version": "1.0.0",
"build": "Sun Feb 02 2020 19:46:48 GMT+0100 (Central European Standard Time)",
"net": "testnet"
}
}
JSON Response Example (username):
{
"address": "G3wAwmGh3rimRm9v4qjuh7RkkAebM",
"username": "liangpeili",
"gny": 2000000000000,
"publicKey": null,
"secondPublicKey": null,
"isDelegate": 1,
"isLocked": 0,
"lockHeight": 0,
"lockAmount": 0,
"_version_": 3
}
:::
::::
2.1.3 Get Balance of Account
API Endpoint: /api/accounts/getBalance
HTTP Verb: GET
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
address | string | Y | Client’s address |
limit | number | N | |
offset | number | N |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
count | number | the total number of available balances |
balances | Array | list of balances |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/accounts/getBalance?address=GJX8DYKb7mF3M6JCUhBqYnLiha6y'
JSON Response Example:
{
"success": true,
"balances": [
{
"gny": "0"
}
]
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/accounts/getBalance?address=GJX8DYKb7mF3M6JCUhBqYnLiha6y'
JSON Response Example:
{
"success": true,
"balances": [
{
"gny": "0"
}
]
}
:::
::::
2.2 Transactions
2.2.1 Get the Transaction Detail Information
API Endpoint: /api/transactions
HTTP Verb: GET
Supported Format: urlencoded
Comment: if there is no parameter in request data, all transactions will be returned.
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
limit | integer | N | the limitation of returned records,minimum:0,maximum:100 |
offset | integer | N | offset, minimum 0 |
id | string | N | transaction id |
senderId | N | GNY address of sender | |
senderPublicKey | string | N | sender’s public key |
blockId | string | N | block id |
height | integer | specific block height | |
type | interger | N | Transaction type, see https://github.com/GNYIO/gny-general/wiki/Transactions for futher information |
message | string | Transaction message |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
transactions | Array | A JSON object list containing multiple transactions’ detail |
count | int | the total number of available transactions |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/transactions?recipientId=16723473400748954103&orderBy=t_timestamp:desc&limit=3'
JSON Response Example:
{
"transactions":[
{
"transactionId":"42254052d4bc1e1132c316469194e6b756a6c0f086a24b00c05a91ced5502046",
"senderId":"G25AKCRu8mK2b4QXq8Jk8bFiNfxeY",
"recipientId":"G2MdtJJPCWTFGZ75QoP7Z5KowRhst",
"recipientName":null,
"currency":"gny",
"amount":"10000000000000000",
"timestamp":0,
"height":0,
"_version_":1
}
],
"count":1
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/transactions?recipientId=16723473400748954103&orderBy=t_timestamp:desc&limit=3'
JSON Response Example:
{
"transactions":[
{
"transactionId":"42254052d4bc1e1132c316469194e6b756a6c0f086a24b00c05a91ced5502046",
"senderId":"G25AKCRu8mK2b4QXq8Jk8bFiNfxeY",
"recipientId":"G2MdtJJPCWTFGZ75QoP7Z5KowRhst",
"recipientName":null,
"currency":"gny",
"amount":"10000000000000000",
"timestamp":0,
"height":0,
"_version_":1
}
],
"count":1
}
:::
::::
2.2.3 Get Transaction Detail by Unconfirmed Transaction ID
API Endpoint: /api/transactions/unconfirmed/get
HTTP Verb: GET
Supported Format: urlencoded
Info: A unconfirmed transaction is only available up to 10 seconds until it is confirmed
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
id | string | Y | unconfirmed transaction id |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
transaction | json | unconfirmed transaction detail inforamtion |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/transactions/unconfirmed/get?id=1dd72aac3dd011754ea2ca80406014404acbe7550463232208c7ddaf63398c03'
JSON Response Example:
{
"transactionId":"42254052d4bc1e1132c316469194e6b756a6c0f086a24b00c05a91ced5502046",
"senderId":"G25AKCRu8mK2b4QXq8Jk8bFiNfxeY",
"recipientId":"G2MdtJJPCWTFGZ75QoP7Z5KowRhst",
"recipientName":null,
"currency":"gny",
"amount":"10000000000000000",
"timestamp":0,
"height":0,
"_version_":1
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/transactions/unconfirmed/get?id=1dd72aac3dd011754ea2ca80406014404acbe7550463232208c7ddaf63398c03'
JSON Response Example:
{
"transactionId":"42254052d4bc1e1132c316469194e6b756a6c0f086a24b00c05a91ced5502046",
"senderId":"G25AKCRu8mK2b4QXq8Jk8bFiNfxeY",
"recipientId":"G2MdtJJPCWTFGZ75QoP7Z5KowRhst",
"recipientName":null,
"currency":"gny",
"amount":"10000000000000000",
"timestamp":0,
"height":0,
"_version_":1
}
:::
::::
2.2.4 Get Unconfirmed Transaction Detail Information [within all network]
API Endpoint: /api/transactions/unconfirmed
HTTP Verb: GET
Supported Format: urlencoded
Comment: If there is no parameter, all unconfirmed transactions in the whole network will be returned.
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
senderPublicKey | string | N | sender’s public key |
address | string | N | address |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
transactions | Array | a list containing all unconfirmed transactions |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/transactions/unconfirmed'
JSON Response Example:
{
"success": true,
"transactions": [] //Currently there is no unconfirmed transaction in the whole network
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/transactions/unconfirmed'
JSON Response Example:
{
"success": true,
"transactions": [] //Currently there is no unconfirmed transaction in the whole network
}
:::
::::
2.3 Blocks
2.3.1 Get the Block Detail Information of the Given ID
API Endpoint: /api/blocks/getBlock
HTTP Verb: GET
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
id | string | only choose one of these three parameters | block ID |
height | string | ditto | block height |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
block | json | the block detail information |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/blocks/getBlock?id=fed53e3ad0a1405f73122708ee53dfed2e9eccc34693d52043bdb6aec4751a8c'
JSON Response Example:
{
"block":{
"version":0,
"payloadHash":"3d2215b8d226b5a38ace219d0ab3f4d84830fd54a832dc05540e20ef81a00547",
"timestamp":0,
"delegate":"61ca23509390845f06ccaa43384e889074dfd0c821e4ba3894f8e62b6a31895a",
"height":0,
"count":203,
"fees":0,
"reward":0,
"signature":"d49b0d08b164c8df402dc1f24430d51126a05a9d1c4012fbdf89272ab95740454b11fd4b44dbf7c60d4757760d8015146433ae21e2e418fd0d7b3aa03adc5503",
"id":"fed53e3ad0a1405f73122708ee53dfed2e9eccc34693d52043bdb6aec4751a8c"
}
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/blocks/getBlock?id=fed53e3ad0a1405f73122708ee53dfed2e9eccc34693d52043bdb6aec4751a8c'
JSON Response Example:
{
"block":{
"version":0,
"payloadHash":"3d2215b8d226b5a38ace219d0ab3f4d84830fd54a832dc05540e20ef81a00547",
"timestamp":0,
"delegate":"61ca23509390845f06ccaa43384e889074dfd0c821e4ba3894f8e62b6a31895a",
"height":0,
"count":203,
"fees":0,
"reward":0,
"signature":"d49b0d08b164c8df402dc1f24430d51126a05a9d1c4012fbdf89272ab95740454b11fd4b44dbf7c60d4757760d8015146433ae21e2e418fd0d7b3aa03adc5503",
"id":"fed53e3ad0a1405f73122708ee53dfed2e9eccc34693d52043bdb6aec4751a8c"
}
}
:::
::::
2.3.2 Get the Latest Block
API Endpoint: /api/blocks
HTTP Verb: GET
Supported Format: urlencoded
Comment: if there is no parameter, the detail of all the blocks in the whole network will be returned
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
limit | integer | N | maximum number of returned records, between 0 and 100 |
offset | integer | N | default is 0 |
orderBy | string | N | sort by a field in the table, for example, specify height:desc to sort descending, default is height:asc . You can only sort by the height property |
transactions | boolean | N | When transactions=true then |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
blocks | Array | a list of JSON objects containing block detail |
count | integer | block height |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/blocks?limit=2&offset=0&orderBy=height:desc'
JSON Response Example:
{
"count":56,
"blocks":[
{
"version":0,
"delegate":"ee9191dff690c0a5b74bba5ab4bddeff60042154d66f2d5c7111123ae8cb4396",
"height":55,
"prevBlockId":"f8d9d54ab0fbbeec1063472a9296e24e8336866de3b0ad5d514fd92ddc73b539",
"timestamp":3621850,
"count":0,
"fees":0,
"payloadHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"reward":0,
"signature":"81b0090adc75346c8985ebe2c6341ba36eeb4b48a2a66ec69b701d55e35577f0dbdd5a633627098a7a64cb81dd1a9d6fbf13f7c0983fd162f46ef12c5468840f",
"id":"e70c0b569ca877d262dadcd1967a02427a9996d8c189ee32b7c8bcff7fa3cff2"
},
{
"version":0,
"delegate":"adc2fdf3174278b2d88f9a37d795fb720ab7530f72367e0aae863143b4b90259",
"height":54,
"prevBlockId":"c3e75c7862a7cbe7f1933837704700bd158c2bd9fc6d1228327323003a0cdd15",
"timestamp":3620770,
"count":0,
"fees":0,
"payloadHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"reward":0,
"signature":"a17bf15385b65dd84e94a7be6ccd635dc291f63b8128dd4951f7544fafa0632fc281e70dd597ae2770b228bdb581fd182f98fda7dc4a2d82cf8e94ff344ef604",
"id":"f8d9d54ab0fbbeec1063472a9296e24e8336866de3b0ad5d514fd92ddc73b539"
}
]}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/blocks?limit=2&offset=0&orderBy=height:desc'
JSON Response Example:
{
"count":56,
"blocks":[
{
"version":0,
"delegate":"ee9191dff690c0a5b74bba5ab4bddeff60042154d66f2d5c7111123ae8cb4396",
"height":55,
"prevBlockId":"f8d9d54ab0fbbeec1063472a9296e24e8336866de3b0ad5d514fd92ddc73b539",
"timestamp":3621850,
"count":0,
"fees":0,
"payloadHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"reward":0,
"signature":"81b0090adc75346c8985ebe2c6341ba36eeb4b48a2a66ec69b701d55e35577f0dbdd5a633627098a7a64cb81dd1a9d6fbf13f7c0983fd162f46ef12c5468840f",
"id":"e70c0b569ca877d262dadcd1967a02427a9996d8c189ee32b7c8bcff7fa3cff2"
},
{
"version":0,
"delegate":"adc2fdf3174278b2d88f9a37d795fb720ab7530f72367e0aae863143b4b90259",
"height":54,
"prevBlockId":"c3e75c7862a7cbe7f1933837704700bd158c2bd9fc6d1228327323003a0cdd15",
"timestamp":3620770,
"count":0,
"fees":0,
"payloadHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"reward":0,
"signature":"a17bf15385b65dd84e94a7be6ccd635dc291f63b8128dd4951f7544fafa0632fc281e70dd597ae2770b228bdb581fd182f98fda7dc4a2d82cf8e94ff344ef604",
"id":"f8d9d54ab0fbbeec1063472a9296e24e8336866de3b0ad5d514fd92ddc73b539"
}
]}
:::
::::
2.3.3 Get the Block Height
API Endpoint: /api/blocks/getHeight
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
height | integer | block height |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/blocks/getheight'
JSON Response Example:
{
"success":true,
"height":140569
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/blocks/getheight'
JSON Response Example:
{
"success":true,
"height":140569
}
:::
::::
2.3.5 Get the Milestone
API Endpoint: /api/blocks/getMilestone
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
milestone | integer |
:::: tabs
::: tab mainnet
curl -k -X GET 'https://mainnet.gny.io/api/blocks/getMilestone'
JSON Response Example:
{
"success":true,
"milestone":0
}
:::
::: tab testnet
curl -k -X GET 'http://localhost:4096/api/blocks/getMilestone'
JSON Response Example:
{
"success":true,
"milestone":0
}
:::
::::
Request Example:
2.3.6 Get the Reward Information of a Block
API Endpoint: /api/blocks/getReward
Request Method: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
reward | integer | the reward of the block |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/blocks/getReward'
JSON Response Example:
{
"success":true,
"reward":200000000
} // every single block that is created will be rewarded by
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/blocks/getReward'
JSON Response Example:
{
"success":true,
"reward":200000000
} // every single block that is created will be rewarded by
:::
::::
2.3.7 Get the Current Maximum Supply of the Blockchain
API Endpoint: /api/blocks/getSupply
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
supply | integer | the total amount of XAS in the whole network |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/blocks/getSupply'
JSON Response Example:
{
"supply":"10000000000000000"
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/blocks/getSupply'
JSON Response Example:
{
"supply":"10000000000000000"
}
:::
::::
2.3.8 Get Current Status of Blockchain
API Endpoint: /api/blocks/getStatus
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
height | integer | blockchain height |
fee | integer | transaction fee |
milestone | integer | |
reward | integer | block reward |
supply | integer | total amount of XAS in the whole network |
:::: tabs
::: tab mainnet
curl -k -X GET 'https://mainnet.gny.io/api/blocks/getStatus'
JSON Response Example:
{
"height":11,
"fee":10000000,
"milestone":0,
"reward":0,
"supply":"10000000000000000"
}
:::
::: tab testnet
curl -k -X GET 'http://localhost:4096/api/blocks/getStatus'
JSON Response Example:
{
"height":11,
"fee":10000000,
"milestone":0,
"reward":0,
"supply":"10000000000000000"
}
:::
::::
Request Example:
2.4 Delegates
2.4.1 Get the Total Number of Delegates
API Endpoint: /api/delegates/count
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
count | integer | total number of delegates |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/delegates/count'
JSON Response Example:
{"success":true,"count":234}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/delegates/count'
JSON Response Example:
{"success":true,"count":234}
:::
::::
2.4.2 Get Voters of Delegate by Delegate Public Key
API Endpoint: /api/delegates/getVoters
Request Method: GET
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
publicKey | string | Y | public key of the delegate |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
accounts | Array | a JSON object list of account |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/delegates/getVoters?username=gny_d1'
JSON Response Example:
{
"success": true,
"accounts": [{
"address": "2918354313445278349",
"publicKey": "4fde4c49f1297d5d3a24b1494204543c4281aff17917ff7ff8ff32da3b4b222f",
"balance": 1338227722727,
"weight": 0.013316660647014596
},
{
"address": "1523444724068322527",
"publicKey": "8a6a61c28dc47541aadf1eecec2175c8f768f2331eea3472b1593bf1aa4e1fb4",
"balance": 2109297623765,
"weight": 0.020989552213127274
},
{
"address": "14483826354741911727",
"publicKey": "5dacb7983095466b9b037690150c3edec0f073815326e33a4744b6d1d50953e2",
"balance": 5135815841470,
"weight": 0.051106336795243436
}
}]
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/delegates/getVoters?username=gny_d1'
JSON Response Example:
{
"success": true,
"accounts": [{
"address": "2918354313445278349",
"publicKey": "4fde4c49f1297d5d3a24b1494204543c4281aff17917ff7ff8ff32da3b4b222f",
"balance": 1338227722727,
"weight": 0.013316660647014596
},
{
"address": "1523444724068322527",
"publicKey": "8a6a61c28dc47541aadf1eecec2175c8f768f2331eea3472b1593bf1aa4e1fb4",
"balance": 2109297623765,
"weight": 0.020989552213127274
},
{
"address": "14483826354741911727",
"publicKey": "5dacb7983095466b9b037690150c3edec0f073815326e33a4744b6d1d50953e2",
"balance": 5135815841470,
"weight": 0.051106336795243436
}
}]
}
:::
::::
2.4.3 Get the Delegate’s Detail by Public Key or Name
API Endpoint: /api/delegates/get/
HTTP Verb: GET
Supported Format: urlencoded
Comment: Get the delegate’s detail by his/her public key or user name
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
publickey | string | choose only one parameter of these three | delegate’s public key |
username | string | ditto | delegate’s user name |
address | string | ditto | delgates’s address |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
delegate | JSON | the detail information of this delegate |
:::: tabs
::: tab mainnet
Request Example (publicKey):
curl -k -X GET 'https://mainnet.gny.io/api/delegates/get?publicKey=85b4c2efe56642398dad3f1ec338e87e712063cfaee4a836cb58b673cdb820f4'
Request Example (username):
curl -k -X GET 'https://mainnet.gny.io/api/delegates/get?username=gny_d1'
Request Example (address):
curl -k -X GET 'https://mainnet.gny.io/api/delegates/get?address=G3kkkSaJNVY87AhVPyxXVGFpR61VB'
JSON Response Example:
{
"delegate":{
"address":"G3kkkSaJNVY87AhVPyxXVGFpR61VB",
"username":"gny_d1",
"transactionId":"156c950d69dda92214fa26d37baff860990fad43d40ba74a342fabf9adaaa2dc",
"publicKey":"85b4c2efe56642398dad3f1ec338e87e712063cfaee4a836cb58b673cdb820f4",
"votes":0,
"producedBlocks":0,
"missedBlocks":0,
"fees":0,
"rewards":0,
"_version_":1,
"rate":47,
"approval":0,
"productivity":"0.00",
"vote":0,
"missedblocks":0,
"producedblocks":0
}
}
:::
::: tab testnet
Request Example (publicKey):
curl -k -X GET 'http://localhost:4096/api/delegates/get?publicKey=85b4c2efe56642398dad3f1ec338e87e712063cfaee4a836cb58b673cdb820f4'
Request Example (username):
curl -k -X GET 'http://localhost:4096/api/delegates/get?username=gny_d1'
Request Example (address):
curl -k -X GET 'http://localhost:4096/api/delegates/get?address=G3kkkSaJNVY87AhVPyxXVGFpR61VB'
JSON Response Example:
{
"delegate":{
"address":"G3kkkSaJNVY87AhVPyxXVGFpR61VB",
"username":"gny_d1",
"transactionId":"156c950d69dda92214fa26d37baff860990fad43d40ba74a342fabf9adaaa2dc",
"publicKey":"85b4c2efe56642398dad3f1ec338e87e712063cfaee4a836cb58b673cdb820f4",
"votes":0,
"producedBlocks":0,
"missedBlocks":0,
"fees":0,
"rewards":0,
"_version_":1,
"rate":47,
"approval":0,
"productivity":"0.00",
"vote":0,
"missedblocks":0,
"producedblocks":0
}
}
:::
::::
2.4.4 Get the List of Delegates
API Endpoint: /api/delegates
HTTP Verb: GET
Supported Format: urlencoded
Comment: if there is no parameter, all delegates in the whole network will be returned.
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
limit | int | N | maximum return records |
offset | integer | N | offset, minimum: 0 |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
delegates | Array | a list containing delegates’ detail information |
count | number | How many delegates exist overall? |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/delegates?limit=2&offset=2'
JSON Response Example:
{
"totalCount":101,
"delegates":[{
"address":"GmCQ2xoGv5bWWtaxQfiBNuTUvaoe",
"username":"gny_d95",
"transactionId":"d32dcf7b9db93591ae94878f4390807e21052b0b76044b5eadc8a6385557e503",
"publicKey":"fffd516f0748ead6720440e94da58ed3afd686b546f5d36a3c5b52cfed834371",
"votes":0,
"producedBlocks":0,
"missedBlocks":0,
"fees":0,
"rewards":0,
"_version_":1,
"rate":1,
"approval":0,
"productivity":"0.00",
"vote":0,
"missedblocks":0,
"producedblocks":0
},
{
"address":"G94UbHjRnd6Em1o3FxQAqkMXA2RV",
"username":"gny_d10",
"transactionId":"9f9a6818b467dcc73c71c24ff622babeb63850263626dfc7472c1f87f58ebbe9",
"publicKey":"ff47c9e9bafcf28ae8528c2b259661ade96a3030ab73ddde82b52ee44c9122b5",
"votes":0,
"producedBlocks":0,
"missedBlocks":0,
"fees":0,
"rewards":0,
"_version_":1,
"rate":2,
"approval":0,
"productivity":"0.00",
"vote":0,
"missedblocks":0,
"producedblocks":0
}
]}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/delegates?limit=2&offset=2'
JSON Response Example:
{
"totalCount":101,
"delegates":[{
"address":"GmCQ2xoGv5bWWtaxQfiBNuTUvaoe",
"username":"gny_d95",
"transactionId":"d32dcf7b9db93591ae94878f4390807e21052b0b76044b5eadc8a6385557e503",
"publicKey":"fffd516f0748ead6720440e94da58ed3afd686b546f5d36a3c5b52cfed834371",
"votes":0,
"producedBlocks":0,
"missedBlocks":0,
"fees":0,
"rewards":0,
"_version_":1,
"rate":1,
"approval":0,
"productivity":"0.00",
"vote":0,
"missedblocks":0,
"producedblocks":0
},
{
"address":"G94UbHjRnd6Em1o3FxQAqkMXA2RV",
"username":"gny_d10",
"transactionId":"9f9a6818b467dcc73c71c24ff622babeb63850263626dfc7472c1f87f58ebbe9",
"publicKey":"ff47c9e9bafcf28ae8528c2b259661ade96a3030ab73ddde82b52ee44c9122b5",
"votes":0,
"producedBlocks":0,
"missedBlocks":0,
"fees":0,
"rewards":0,
"_version_":1,
"rate":2,
"approval":0,
"productivity":"0.00",
"vote":0,
"missedblocks":0,
"producedblocks":0
}
]}
:::
::::
2.4.7 Get own Votes
API Endpoint: /api/delegates/getOwnVotes
HTTP Verb: POST
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
address | string | N | accounts address |
username | string | N | accounts username |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
delegates | Array | a list containing delegates’ detail information |
:::: tabs
::: tab mainnet
Request Example (with username):
curl -k -X GET 'https://mainnet.gny.io/api/delegates/getOwnVotes?username=a1300'
Request Example (with address):
curl -k -X GET 'https://mainnet.gny.io/api/delegates/getOwnVotes?address=GtnevSTQqPUcZNAMFJmc8DLUXHFz'
JSON Response Example:
{
"success":true,
"delegates":[
{
"address":"G3yguB3tazFf6bia3CU1RjXtv2iV6",
"username":"gny_d72",
"tid":"ce6fced7d207e7e55f92a3b68a2394f34b2404cba5c35ea31bf80d2bc871efd5",
"publicKey":"feda901bb63e494e2f30865734e40aa0464f59f2a526a61648c86ba2faf1a952",
"votes":"900000000000",
"producedBlocks":"0",
"missedBlocks":"0",
"fees":"0",
"rewards":"0",
"_version_":2,
"rate":1,
"approval":"0.00225",
"productivity":"NaN"
},
{
"address":"GtZDocCVQ6iNR6JzjPCqgJPzmoRN",
"username":"gny_d58",
"tid":"aeb8ae1404985bb38c18d695ce9c336b65382c94fa85d38db3d575f03d3ff84f",
"publicKey":"fbc95173f63a02239ff37f81236e283504d247d551143d16c2fee80c692b25bd",
"votes":"900000000000",
"producedBlocks":"1",
"missedBlocks":"0",
"fees":"0",
"rewards":"0",
"_version_":3,
"rate":2,
"approval":"0.00225",
"productivity":"100.00"
}
]
}
:::
::: tab testnet
Request Example (with username):
curl -k -X GET 'http://localhost:4096/api/delegates/getOwnVotes?username=a1300'
Request Example (with address):
curl -k -X GET 'http://localhost:4096/api/delegates/getOwnVotes?address=GtnevSTQqPUcZNAMFJmc8DLUXHFz'
JSON Response Example:
{
"success":true,
"delegates":[
{
"address":"G3yguB3tazFf6bia3CU1RjXtv2iV6",
"username":"gny_d72",
"tid":"ce6fced7d207e7e55f92a3b68a2394f34b2404cba5c35ea31bf80d2bc871efd5",
"publicKey":"feda901bb63e494e2f30865734e40aa0464f59f2a526a61648c86ba2faf1a952",
"votes":"900000000000",
"producedBlocks":"0",
"missedBlocks":"0",
"fees":"0",
"rewards":"0",
"_version_":2,
"rate":1,
"approval":"0.00225",
"productivity":"NaN"
},
{
"address":"GtZDocCVQ6iNR6JzjPCqgJPzmoRN",
"username":"gny_d58",
"tid":"aeb8ae1404985bb38c18d695ce9c336b65382c94fa85d38db3d575f03d3ff84f",
"publicKey":"fbc95173f63a02239ff37f81236e283504d247d551143d16c2fee80c692b25bd",
"votes":"900000000000",
"producedBlocks":"1",
"missedBlocks":"0",
"fees":"0",
"rewards":"0",
"_version_":3,
"rate":2,
"approval":"0.00225",
"productivity":"100.00"
}
]
}
:::
::::
2.4.8 Enable Forging for Delegate
API Endpoint: /api/delegates/forging/enable
HTTP Verb: POST
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
secret | string | Y | GNY account password |
publicKey | string | N | public key |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
:::: tabs
::: tab mainnet
Request Example:
curl -k -H "Content-Type: application/json" -X POST -d '{"secret":"flat entire admit review filter addict friend author ahead bullet wife bind"}' 'https://mainnet.gny.io/api/delegates/forging/enable'
JSON Response Example:
{
"success":true
}
:::
::: tab testnet
Request Example:
curl -k -H "Content-Type: application/json" -X POST -d '{"secret":"flat entire admit review filter addict friend author ahead bullet wife bind"}' 'http://localhost:4096/api/delegates/forging/enable'
JSON Response Example:
{
"success":true
}
:::
::::
2.4.9 Disable Forging for Delegate
API Endpoint: /api/delegates/forging/disable
HTTP Verb: POST
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
secret | string | Y | GNY account password |
publicKey | string | N | public key |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
:::: tabs
::: tab mainnet
Request Example:
curl -k -H "Content-Type: application/json" -X POST -d '{"secret":"flat entire admit review filter addict friend author ahead bullet wife bind"}' 'https://mainnet.gny.io/api/delegates/forging/disable'
JSON Response Example:
{
"success":true
}
:::
::: tab testnet
Request Example:
curl -k -H "Content-Type: application/json" -X POST -d '{"secret":"flat entire admit review filter addict friend author ahead bullet wife bind"}' 'http://localhost:4096/api/delegates/forging/disable'
JSON Response Example:
{
"success":true
}
:::
::::
2.4.10 Check Delgate Forging Status
API Endpoint: /api/delegates/forging/status
HTTP Verb: GET
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
publicKey | string | N | public key of a delegate |
:::: tabs
::: tab mainnet
Request Example:
curl -X GET 'https://mainnet.gny.io/api/delegates/forging/status?publicKey=ff47c9e9bafcf28ae8528c2b259661ade96a3030ab73ddde82b52ee44c9122b5'
JSON Response Example (forging enabled):
{
"success":true,
"enabled":true
}
JSON Response Example (forging disabled):
{
"success":true,
"enabled":false
}
:::
::: tab testnet
Request Example:
curl -X GET 'http://localhost:4096/api/delegates/forging/status?publicKey=ff47c9e9bafcf28ae8528c2b259661ade96a3030ab73ddde82b52ee44c9122b5'
JSON Response Example (forging enabled):
{
"success":true,
"enabled":true
}
JSON Response Example (forging disabled):
{
"success":true,
"enabled":false
}
:::
::::
2.4.11 Return own Delegates Produced Blocks
API Endpoint: /api/delegates/ownProducedBlocks
HTTP Verb: GET
Supported Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
publicKey | string | N | public key of a delegate |
address | string | N | address of a delegate |
username | string | N | username of a delegate |
limit | integer | N | maximum number of produced blocks to return, between 0 and 100 |
offset | integer | N | Offset, minimum 0 |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
delegate | JSON | the detail information of this delegate |
blocks | Array | a list of JSON objects containing block detail |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/delegates/ownProducedBlocks?username=gny_d1'
JSON Response Example:
{
"success": true,
"delegate": {
"address": "GM5CevQY3brUyRtDMng5Co41nWHh",
"username": "gny_d1",
"tid": "4c1ff5bfa17873df950b81f371cd0c9273d87af97af148b215d2f24545e383b2",
"publicKey": "0bcf038e0cb8cb61b72cb06f943afcca62094ad568276426a295ba8f550708a9",
"votes": "0",
"producedBlocks": "2",
"missedBlocks": "0",
"fees": "0",
"rewards": "0",
"_version_": 3,
"rate": 97,
"approval": "0",
"productivity": "1"
},
"blocks": [
{
"id": "716bb19a164a648e51cdadb65abdaa23c694c4cc9c0b4a2d93fb514700a94e7a",
"version": 0,
"timestamp": 51573040,
"height": "30",
"prevBlockId": "8a7cd22f62a38479c289a20ab127b85c1c6c8051c94923cf7658a5b793324f4e",
"count": 0,
"fees": "0",
"reward": "0",
"payloadHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"delegate": "0bcf038e0cb8cb61b72cb06f943afcca62094ad568276426a295ba8f550708a9",
"signature": "3f7f435bac597e613556aba202608f2a4cec3b0c669c560668842fbc175312732845f49d00417100ed58c3b54a21cfc52606cdd86791081b93203713d0a79e01",
"_version_": 0
},
{
"id": "e931f45694b3ebec04ef8c46862674b6794edfbb2864380645606127130e3375",
"version": 0,
"timestamp": 51574500,
"height": "176",
"prevBlockId": "c338eff51fb578ba608d2d652bcb8efabd69275e3857fda422bab34df88da9a9",
"count": 0,
"fees": "0",
"reward": "0",
"payloadHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"delegate": "0bcf038e0cb8cb61b72cb06f943afcca62094ad568276426a295ba8f550708a9",
"signature": "2f58cc7c186639b447a33efc2111679e363a0cfbe82525e6c910b47722a397ac31e57538d8880392a4192056bee549ac48d81ca847b581f9aca53ba08d265908",
"_version_": 0
}
]
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/delegates/ownProducedBlocks?username=gny_d1'
JSON Response Example:
{
"success": true,
"delegate": {
"address": "GM5CevQY3brUyRtDMng5Co41nWHh",
"username": "gny_d1",
"tid": "4c1ff5bfa17873df950b81f371cd0c9273d87af97af148b215d2f24545e383b2",
"publicKey": "0bcf038e0cb8cb61b72cb06f943afcca62094ad568276426a295ba8f550708a9",
"votes": "0",
"producedBlocks": "2",
"missedBlocks": "0",
"fees": "0",
"rewards": "0",
"_version_": 3,
"rate": 97,
"approval": "0",
"productivity": "1"
},
"blocks": [
{
"id": "716bb19a164a648e51cdadb65abdaa23c694c4cc9c0b4a2d93fb514700a94e7a",
"version": 0,
"timestamp": 51573040,
"height": "30",
"prevBlockId": "8a7cd22f62a38479c289a20ab127b85c1c6c8051c94923cf7658a5b793324f4e",
"count": 0,
"fees": "0",
"reward": "0",
"payloadHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"delegate": "0bcf038e0cb8cb61b72cb06f943afcca62094ad568276426a295ba8f550708a9",
"signature": "3f7f435bac597e613556aba202608f2a4cec3b0c669c560668842fbc175312732845f49d00417100ed58c3b54a21cfc52606cdd86791081b93203713d0a79e01",
"_version_": 0
},
{
"id": "e931f45694b3ebec04ef8c46862674b6794edfbb2864380645606127130e3375",
"version": 0,
"timestamp": 51574500,
"height": "176",
"prevBlockId": "c338eff51fb578ba608d2d652bcb8efabd69275e3857fda422bab34df88da9a9",
"count": 0,
"fees": "0",
"reward": "0",
"payloadHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"delegate": "0bcf038e0cb8cb61b72cb06f943afcca62094ad568276426a295ba8f550708a9",
"signature": "2f58cc7c186639b447a33efc2111679e363a0cfbe82525e6c910b47722a397ac31e57538d8880392a4192056bee549ac48d81ca847b581f9aca53ba08d265908",
"_version_": 0
}
]
}
:::
::::
2.5 Peers
2.5.1 Get all Peers’ Information in the Whole Network
API Endpoint: /api/peers
HTTP Verb: GET
Supported Format: urlencoded
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
peers | Array | a JSON array of peers’ information |
count | integer | the number of currently running peers |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/peers'
JSON Response Example:
{
"success": true,
"peers": [
{
"id": {
"id": "QmeDn2SETzxuENnAiynzWXjw78eDRiNLmwzNDtwb2XhVsi",
"pubKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDo9QnqRUmrO3uAqyoAAnjmDB7+lCSA9a7tAKv0vsq0fnq0/espA70e7sJZSjmHqOpP5Jyse3pjezMfSsBR80vQJheb0dOwCsZu/dJ2kA0nuXRZwOd7ZUUsRUh5oj5NFBrY3tuScq/HtbXDqMs0MZdlKIBkEseTnF1rLZw8fhIiY3AFwlJFUCNGKyrk2rk6IvrwMWshyBkr+r1pPfGp6W46/fw5gwdvRTgxCvmqkQq35uncosBbV2+lAimvviTfT7NR6SuLdkAb5TqC0kh7XJV2eu44TtHwI/rTQw0lfCg/WnRKA+uFyedeg3BcTzqjdnhkxP8v7KAMnxi8Z/3q50jbAgMBAAE="
},
"multiaddrs": [
"/ip4/13.80.136.143/tcp/4097/p2p/QmeDn2SETzxuENnAiynzWXjw78eDRiNLmwzNDtwb2XhVsi"
],
"simple": {
"host": "13.80.136.143",
"port": 4097
}
},
{
"id": {
"id": "QmPiFnYYNeuYBxqzA77bPPrpJ8AaGJQujMVFXYJEGbpMRR",
"pubKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDghE7wWvJxLW2KFTgfaBQ6Yh5hpSrxZqlOu/M4kWFcZ87S81053So92CCcTLdJPaE6mvip3/PTHpzzvfsiEhk7/1oTHDonKjbx44L39dqzvVht+q8LyU3XYo8qw6mJd4Ry69+89V1RmgJGdEtR+G2sBQxZ/m+subcHKfy6jvG2Zw8BkJdcyjlAXaH4mw9ZO5lkrN8E0aI32GwipVBu37Wts7ZYIcJxZ9zxGGVwNb7B8Utq2DVSpmqguM9M1DsBDJZ+yZg3vF435zLcmMS7eRLCB0PIXrZ5HPYsDKk/FMyF3sDy05xtGTUgF75L7zeMYxoEUg6BtgM9HV5T2cWtcDDXAgMBAAE="
},
"multiaddrs": [
"/ip4/174.129.53.40/tcp/4097/p2p/QmPiFnYYNeuYBxqzA77bPPrpJ8AaGJQujMVFXYJEGbpMRR"
],
"simple": {
"host": "174.129.53.40",
"port": 4097
}
}
],
"count": 2
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/peers'
JSON Response Example:
{
"success": true,
"peers": [
{
"id": {
"id": "QmeDn2SETzxuENnAiynzWXjw78eDRiNLmwzNDtwb2XhVsi",
"pubKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDo9QnqRUmrO3uAqyoAAnjmDB7+lCSA9a7tAKv0vsq0fnq0/espA70e7sJZSjmHqOpP5Jyse3pjezMfSsBR80vQJheb0dOwCsZu/dJ2kA0nuXRZwOd7ZUUsRUh5oj5NFBrY3tuScq/HtbXDqMs0MZdlKIBkEseTnF1rLZw8fhIiY3AFwlJFUCNGKyrk2rk6IvrwMWshyBkr+r1pPfGp6W46/fw5gwdvRTgxCvmqkQq35uncosBbV2+lAimvviTfT7NR6SuLdkAb5TqC0kh7XJV2eu44TtHwI/rTQw0lfCg/WnRKA+uFyedeg3BcTzqjdnhkxP8v7KAMnxi8Z/3q50jbAgMBAAE="
},
"multiaddrs": [
"/ip4/13.80.136.143/tcp/4097/p2p/QmeDn2SETzxuENnAiynzWXjw78eDRiNLmwzNDtwb2XhVsi"
],
"simple": {
"host": "13.80.136.143",
"port": 4097
}
},
{
"id": {
"id": "QmPiFnYYNeuYBxqzA77bPPrpJ8AaGJQujMVFXYJEGbpMRR",
"pubKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDghE7wWvJxLW2KFTgfaBQ6Yh5hpSrxZqlOu/M4kWFcZ87S81053So92CCcTLdJPaE6mvip3/PTHpzzvfsiEhk7/1oTHDonKjbx44L39dqzvVht+q8LyU3XYo8qw6mJd4Ry69+89V1RmgJGdEtR+G2sBQxZ/m+subcHKfy6jvG2Zw8BkJdcyjlAXaH4mw9ZO5lkrN8E0aI32GwipVBu37Wts7ZYIcJxZ9zxGGVwNb7B8Utq2DVSpmqguM9M1DsBDJZ+yZg3vF435zLcmMS7eRLCB0PIXrZ5HPYsDKk/FMyF3sDy05xtGTUgF75L7zeMYxoEUg6BtgM9HV5T2cWtcDDXAgMBAAE="
},
"multiaddrs": [
"/ip4/174.129.53.40/tcp/4097/p2p/QmPiFnYYNeuYBxqzA77bPPrpJ8AaGJQujMVFXYJEGbpMRR"
],
"simple": {
"host": "174.129.53.40",
"port": 4097
}
}
],
"count": 2
}
:::
::::
2.5.2 Get the Version of Peer
API Endpoint: /api/peers/version
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
version | string | version number |
build | timestamp | built time |
net | string | either localnet, testnet or mainnet |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/peers/version'
JSON Response Example:
{
"success": true,
"version": "1.0.5",
"build": "Tue Jan 28 2020 12:44:42 GMT+0000 (Coordinated Universal Time)",
"net": "localnet"
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/peers/version'
JSON Response Example:
{
"success": true,
"version": "1.0.5",
"build": "Tue Jan 28 2020 12:44:42 GMT+0000 (Coordinated Universal Time)",
"net": "localnet"
}
:::
::::
2.5.3 Get Node P2P Information
API Endpoint: /api/peers/version
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
id | string of peerId | libp2p peer-id |
multiaddrs | string[] | Array of multiaddrs strings which is used for p2p communcation |
publicIp | string | own public ip |
address | string | ip address on which the server is listening. Normal this is a private ip address |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/peers/info'
JSON Response Example:
{
"success": true,
"id": "QmQbVdde9AeXSP3FoLyVNd3Fi3BjCe2tFyJV43bNWEBYSA",
"multiaddrs": [
"/ip4/20.188.42.0/tcp/4097/p2p/QmQbVdde9AeXSP3FoLyVNd3Fi3BjCe2tFyJV43bNWEBYSA"
],
"publicIp": "20.188.42.0",
"address": "10.0.3.4"
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/peers/info'
JSON Response Example:
{
"success": true,
"id": "QmQbVdde9AeXSP3FoLyVNd3Fi3BjCe2tFyJV43bNWEBYSA",
"multiaddrs": [
"/ip4/20.188.42.0/tcp/4097/p2p/QmQbVdde9AeXSP3FoLyVNd3Fi3BjCe2tFyJV43bNWEBYSA"
],
"publicIp": "20.188.42.0",
"address": "10.0.3.4"
}
:::
::::
2.6 Sync and Loader
2.6.1 Get the local blockchain loadig status
API Endpoint: /api/loader/status
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
loaded | bool | |
blocksCount | integer | |
now | integer |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/loader/status'
JSON Response Example:
{
"loaded":true,
"now":0,
"blocksCount":0
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/loader/status'
JSON Response Example:
{
"loaded":true,
"now":0,
"blocksCount":0
}
:::
::::
2.6.2 Get the block syncing status
API Endpoint: /api/loader/status/sync
HTTP Verb: GET
Supported Format: none
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
height | int | block height |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/loader/status/sync'
JSON Response Example:
{
"syncing":false,
"blocks":0,
"height":23
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/loader/status/sync'
JSON Response Example:
{
"syncing":false,
"blocks":0,
"height":23
}
:::
::::
2.7 Transfers
2.6.1 Get the transfers
API Endpoint: /api/transfers/
HTTP Verb: GET
Supported Format: none
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
query.limit | integer | N | the limitation of returned records,minimum:0,maximum:100 |
query.offset | integer | N | offset, minimum 0 |
query.ownId | string | N | GNY address, this will return all transfers where the ownId is the recipient or the sender |
query.currency | string | N | gny UIA Assets |
query.senderId | string | N | GNY address of sender |
query.recipientId | string | N | recipient’s GNY address |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
count | string | the number of transfers |
transfers | Array | An array of transfers |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/transfers/'
JSON Response Example:
{
"count": 1,
"transfers": [
{"tid": "0b20e6bebe415f6112f47ffc59ec0d6a2119acc292a1bf1dd2d04140ba23633a",
"senderId": "GiAefCner9PPTYs53XcYhfdLsCJ1",
"recipientId": "GQSyZwU8RMZeNDJjitwBbxVCCwD8",
"recipientName":null,
"currency": "GNY",
"amount": "999998500000000",
"timestamp": 72634135,
"height": "256896",
"_version_": 1,
"transaction": {
"id": "0b20e6bebe415f6112f47ffc59ec0d6a2119acc292a1bf1dd2d04140ba23633a",
"type": 0,
"timestamp": 72634135,
"senderId": "GiAefCner9PPTYs53XcYhfdLsCJ1",
"senderPublicKey": "2d30669f98960a039d2a7a40f64883c7bd18706c9a06cba55f1bfa98611c1652",
"fee": "10000000",
"signatures": ["68c639064eb3dc2e31cc0aabcc46cd2a07b62e5071693630a5bca075f216fe24531d4a0e2570f950709c06efb7488c9edf104995a6ffe042f94f334f767e0b08"],
"secondSignature": null,
"args": "["999998500000000","GQSyZwU8RMZeNDJjitwBbxVCCwD8"]",
"height": "256896",
"message": "",
"_version_": 1
}
}
]
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/transfers/'
JSON Response Example:
{
"count": 1,
"transfers": [
{"tid": "0b20e6bebe415f6112f47ffc59ec0d6a2119acc292a1bf1dd2d04140ba23633a",
"senderId": "GiAefCner9PPTYs53XcYhfdLsCJ1",
"recipientId": "GQSyZwU8RMZeNDJjitwBbxVCCwD8",
"recipientName":null,
"currency": "GNY",
"amount": "999998500000000",
"timestamp": 72634135,
"height": "256896",
"_version_": 1,
"transaction": {
"id": "0b20e6bebe415f6112f47ffc59ec0d6a2119acc292a1bf1dd2d04140ba23633a",
"type": 0,
"timestamp": 72634135,
"senderId": "GiAefCner9PPTYs53XcYhfdLsCJ1",
"senderPublicKey": "2d30669f98960a039d2a7a40f64883c7bd18706c9a06cba55f1bfa98611c1652",
"fee": "10000000",
"signatures": ["68c639064eb3dc2e31cc0aabcc46cd2a07b62e5071693630a5bca075f216fe24531d4a0e2570f950709c06efb7488c9edf104995a6ffe042f94f334f767e0b08"],
"secondSignature": null,
"args": "["999998500000000","GQSyZwU8RMZeNDJjitwBbxVCCwD8"]",
"height": "256896",
"message": "",
"_version_": 1
}
}
]
}
:::
::::
2.6.2 Get the total amount of transfers
API Endpoint: /api/transfers/amount
HTTP Verb: GET
Supported Format: none
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
startTimestamp | string | Y | start timestamp |
endTimestamp | string | Y | end timestamp |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | bool | true: response data return successfully |
count | string | the number of transfers |
strTotalAmount | string | the total amout of transfers |
:::: tabs
::: tab mainnet
Request Example:
curl -k -X GET 'https://mainnet.gny.io/api/transfers/amount'
JSON Response Example:
{
"count": 43,
"strTotalAmount": "87709270370000000"
}
:::
::: tab testnet
Request Example:
curl -k -X GET 'http://localhost:4096/api/transfers/amount'
JSON Response Example:
{
"count": 43,
"strTotalAmount": "87709270370000000"
}
:::
::::
2.11 User Defined Asset UIA
2.11.1 Get all publishers
API Endpoint: /api/uia/issuers
HTTP Verb: GET
Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
limit | integer | N | maximum number of records to return, between 0 and 100 |
offset | integer | N | Offset, minimum 0 |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | boolean | Whether operation was successful |
issuers | Array | Array of publishers |
count | integer | Total number of publishers |
:::: tabs
::: tab mainnet
Request example:
curl -X GET 'https://mainnet.gny.io/api/uia/issuers?offset=0&limit=2'
JSON Response:
{
"count":1,
"issues":[{
"tid":"279ee5d155f25bd5eb7f09b63a6e096b89e22ff70b5b8a9858cfd19dc21149d3",
"name":"AAA",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"desc":""some description"",
"_version_":1
}]
}
:::
::: tab testnet
Request example:
curl -X GET 'http://localhost:4096/api/uia/issuers?offset=0&limit=2'
JSON Response:
{
"count":1,
"issues":[{
"tid":"279ee5d155f25bd5eb7f09b63a6e096b89e22ff70b5b8a9858cfd19dc21149d3",
"name":"AAA",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"desc":""some description"",
"_version_":1
}]
}
:::
::::
2.11.2 Query information about a publisher by name
API Endpoint: /api/uia/issuers/:name|address
HTTP Verb: GET
Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
publisherName | string | Y | Can be GNY publisher name |
address | string | Y | Can be the GNY account address |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | boolean | Whether operation was successful |
issuers | JSON | Contains the publisher name, description and id (GNY address) |
:::: tabs
::: tab mainnet
Request example (publisher name):
curl -X GET 'https://mainnet.gny.io/api/uia/issuers/AAA'
Request example (publisher address):
curl -X GET 'https://mainnet.gny.io/api/uia/issuers/G4GDW6G78sgQdSdVAQUXdm5xPS13t'
JSON Response:
{
"issuer":{
"tid":"c194bf2d4ccb1d07829f161165b307332d91a14f44a71a7a99a28dea8154e524",
"name":"AAA",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"desc":""some description"",
"_version_":1
}
}
:::
::: tab testnet
Request example (publisher name):
curl -X GET 'http://localhost:4096/api/uia/issuers/AAA'
Request example (publisher address):
curl -X GET 'http://localhost:4096/api/uia/issuers/G4GDW6G78sgQdSdVAQUXdm5xPS13t'
JSON Response:
{
"issuer":{
"tid":"c194bf2d4ccb1d07829f161165b307332d91a14f44a71a7a99a28dea8154e524",
"name":"AAA",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"desc":""some description"",
"_version_":1
}
}
:::
::::
2.11.3 View assets of a specified publisher
API Endpoint: /api/uia/issuers/:publisherName/assets
HTTP Verb: GET
Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
limit | integer | N | maximum number of records to return, between 0 and 100 |
offset | integer | N | Offset, minimum 0 |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | boolean | Whether operation was successful |
assets | Array | Array of assets |
count | interger | The total number of assets registered by the publisher |
:::: tabs
::: tab mainnet
Request example:
curl -X GET 'https://mainnet.gny.io/api/uia/issuers/AAA/assets/'
JSON Response:
{
"count":1,
"assets":[{
"tid":"4316b799601e15831bbd8514862e61b6b67754b8971938f90025723d1be9eb67",
"name":"AAA.BBB",
"timestamp":3714160,
"maximum":"1000000000",
"precision":8,
"quantity":"500000000",
"desc":"some description",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"_version_":2
}]
}
:::
::: tab testnet
Request example:
curl -X GET 'http://localhost:4096/api/uia/issuers/AAA/assets/'
JSON Response:
{
"count":1,
"assets":[{
"tid":"4316b799601e15831bbd8514862e61b6b67754b8971938f90025723d1be9eb67",
"name":"AAA.BBB",
"timestamp":3714160,
"maximum":"1000000000",
"precision":8,
"quantity":"500000000",
"desc":"some description",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"_version_":2
}]
}
:::
::::
2.11.4 Get all assets
API Endpoint: /api/uia/assets
HTTP Verb: GET
Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
limit | integer | N | maximum number of records to return, between 0 and 100 |
offset | integer | N | Offset, minimum 0 |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | boolean | Whether operation was successful |
assets | Array | Array of assets |
count | integer | Number of all assets |
:::: tabs
::: tab mainnet
Request example:
curl -X GET 'https://mainnet.gny.io/api/uia/assets?offset=0&limit=2'
JSON Response:
{
"count":1,
"assets":[{
"tid":"44fd0eff16f2a39be263a3b77f34145c7039b16790265feef74c52538eff9cde",
"name":"AAA.BBB",
"timestamp":3714682,
"maximum":"1000000000",
"precision":8,
"quantity":"500000000",
"desc":"some description",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"_version_":2
}]
}
:::
::: tab testnet
Request example:
curl -X GET 'http://localhost:4096/api/uia/assets?offset=0&limit=2'
JSON Response:
{
"count":1,
"assets":[{
"tid":"44fd0eff16f2a39be263a3b77f34145c7039b16790265feef74c52538eff9cde",
"name":"AAA.BBB",
"timestamp":3714682,
"maximum":"1000000000",
"precision":8,
"quantity":"500000000",
"desc":"some description",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"_version_":2
}]
}
:::
::::
2.11.5 Get specified asset information
API Endpoint: /api/uia/assets/:name
HTTP Verb: GET
Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
name | string | Y | Asset name |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | boolean | Whether operation was successful |
assets | JSON | Contains asset name, description, cap, precision, current circulation, issue height, publisher id |
:::: tabs
::: tab mainnet
Request example:
curl -X GET 'https://mainnet.gny.io/api/uia/assets/AAA.BBB'
JSON Response:
{
"asset":{
"tid":"92bf426d9a517a35ac6a63ef210d0f062f5195b636f35878e949e7581355d5b8",
"name":"AAA.BBB",
"timestamp":3717011,
"maximum":"1000000000",
"precision":8,
"quantity":"500000000",
"desc":"some description",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"_version_":2
}
}
:::
::: tab testnet
Request example:
curl -X GET 'http://localhost:4096/api/uia/assets/AAA.BBB'
JSON Response:
{
"asset":{
"tid":"92bf426d9a517a35ac6a63ef210d0f062f5195b636f35878e949e7581355d5b8",
"name":"AAA.BBB",
"timestamp":3717011,
"maximum":"1000000000",
"precision":8,
"quantity":"500000000",
"desc":"some description",
"issuerId":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"_version_":2
}
}
:::
::::
2.11.6 Get the balance of all UIA Assets for an account
API Endpoint: /api/uia/balances/:address
HTTP Verb: GET
Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
address | string | Y | GNY account address |
limit | integer | N | maximum number of records to return, between 0 and 100 |
offset | integer | N | Offset, minimum 0 |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | boolean | Whether operation was successful |
balances | Array | Asset array, details owned, each element is an asset, including asset name, balance, cap, precision, current circulation, whether to cancel (0: not cancelled, 1: cancelled) |
count | integer | The number of assets currently owned by this address |
:::: tabs
::: tab mainnet
Request example:
curl -X GET 'https://mainnet.gny.io/api/uia/balances/G4GDW6G78sgQdSdVAQUXdm5xPS13t'
JSON Response:
{
"count":1,
"balances":[{
"address":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"currency":"AAA.BBB",
"balance":"500000000",
"flag":2,
"_version_":1
}]
}
:::
::: tab testnet
Request example:
curl -X GET 'http://localhost:4096/api/uia/balances/G4GDW6G78sgQdSdVAQUXdm5xPS13t'
JSON Response:
{
"count":1,
"balances":[{
"address":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"currency":"AAA.BBB",
"balance":"500000000",
"flag":2,
"_version_":1
}]
}
:::
::::
2.11.7 Get balance of a specific UIA Asset for an account
API Endpoint: /api/uia/balances/:address/:currency
HTTP Verb: GET
Format: urlencoded
Request Parameter Description: none
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | boolean | Whether operation was successful |
:::: tabs
::: tab mainnet
Request example:
curl -X GET 'https://mainnet.gny.io/api/uia/balances/G4GDW6G78sgQdSdVAQUXdm5xPS13t/AAA.BBB'
JSON Response:
{
"balance":{
"address":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"currency":"AAA.BBB",
"balance":"1000000000",
"flag":2,
"_version_":2
}
}
:::
::: tab testnet
Request example:
curl -X GET 'http://localhost:4096/api/uia/balances/G4GDW6G78sgQdSdVAQUXdm5xPS13t/AAA.BBB'
JSON Response:
{
"balance":{
"address":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"currency":"AAA.BBB",
"balance":"1000000000",
"flag":2,
"_version_":2
}
}
:::
::::
2.11.8 Get holders of a specific UIA Asset
API Endpoint: /api/uia/holders/:currency
HTTP Verb: GET
Format: urlencoded
Request Parameter Description:
Name | Type | Required | Description |
---|---|---|---|
currency | string | Y | a specific UIA Asset |
limit | integer | N | maximum number of records to return, between 0 and 100 |
offset | integer | N | Offset, minimum 0 |
Response Parameter Description:
Name | Type | Description |
---|---|---|
success | boolean | Whether operation was successful |
holders | Array | Asset array, each element is an asset holder, including address, balance, currency |
count | integer | The number of holders owning this asset |
:::: tabs
::: tab mainnet
Request example:
curl -X GET 'https://mainnet.gny.io/api/uia/holders/AAA.BBB'
JSON Response:
{
"count":1,
"holders":[{
"address":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"currency":"AAA.BBB",
"balance":"500000000",
}]
}
:::
::: tab testnet
Request example:
curl -X GET 'http://localhost:4096/api/uia/holders/AAA.BBB'
JSON Response:
{
"count":1,
"holders":[{
"address":"G4GDW6G78sgQdSdVAQUXdm5xPS13t",
"currency":"AAA.BBB",
"balance":"500000000",
}]
}
:::
::::
2.9 Initiate Transactions
2.9.1 Overview
In order to send transactions you need set the magic
header:
:::: tabs
::: tab mainnet
curl
example:
curl -X POST --header "magic: e6a8a4cd"
axios (JavaScript example)
const exampleUrl = "https://mainnet.gny.io/peer/transactions";
const data = {
transaction: someTransaction
};
const config = {
headers: {
magic: "e6a8a4cd"
}
};
await axios.post(url, data, config);
:::
::: tab testnet
curl
example:
curl -X POST --header "magic: 594fe0f3"
axios (JavaScript example)
const exampleUrl = "http://localhost:4096/peer/transactions";
const data = {
transaction: someTransaction
};
const config = {
headers: {
magic: "594fe0f3"
}
};
await axios.post(url, data, config);
:::
::::