LibreMoney
2. Основная часть
2.8. API (RestAPI)
Операции для работы с серверной частью
Get Constants
Запрос на получение списка всех констант, используемых сервером, и их текущих значений.
Request
http://localhost:1400/api/getConstants
Запрос
{
"maxBlockPayloadLength":40800,
"genesisAccountId":"GENESISACC",
"genesisBlockId":"GENESISBLK",
"transactionTypes":
[
{
"description":"Payment","value":0,"subtypes":
[
{"description":"Ordinary payment","value":0}
]
},
{
"description":"Messaging","value":1,"subtypes":
[
{"description":"Arbitrary message","value":0},
{"description":"Alias assignment","value":1},
{"description":"Poll creation","value":2},
{"description":"Vote casting","value":3},
{"description":"Hub terminal announcement","value":4},
{"description":"Account info","value":5}
]
},
{
"description":"Colored coins","value":2,"subtypes":
[
{"description":"Asset issuance","value":0},
{"description":"Asset transfer","value":1},
{"description":"Ask order placement","value":2},
{"description":"Bid order placement","value":3},
{"description":"Ask order cancellation","value":4},
{"description":"Bid order cancellation","value":5}
]
},
{
"description":"Digital goods","value":3,"subtypes":
[
{"description":"Listing","value":0},
{"description":"Delisting","value":1},
{"description":"Price change","value":2},
{"description":"Quantity change","value":3},
{"description":"Purchase","value":4},
{"description":"Delivery","value":5},
{"description":"Feedback","value":6},
{"description":"Refund","value":7}
]
},
{
"description":"Account Control","value":4,"subtypes":
[
{"description":"Effective balance leasing","value":0}
]
}
],
"peerStates":
[
{"description":"Non-connected","value":0},
{"description":"Connected","value":1},
{"description":"Disconnected","value":2}
]
}
Где:
- GENESISACC генезис аккаунт
- GENESISBLK генезис блок
Пример
Запрос:
http://localhost:1400/api/getConstants
Ответ:
{
"maxBlockPayloadLength":40800,
"genesisAccountId":"1739068987193023818",
"genesisBlockId":"2680262203532249785",
"transactionTypes":
[
{
"description":"Payment","value":0,"subtypes":
[
{"description":"Ordinary payment","value":0}
]
},
{
"description":"Messaging","value":1,"subtypes":
[
{"description":"Arbitrary message","value":0},
{"description":"Alias assignment","value":1},
{"description":"Poll creation","value":2},
{"description":"Vote casting","value":3},
{"description":"Hub terminal announcement","value":4},
{"description":"Account info","value":5}
]
},
{
"description":"Colored coins","value":2,"subtypes":
[
{"description":"Asset issuance","value":0},
{"description":"Asset transfer","value":1},
{"description":"Ask order placement","value":2},
{"description":"Bid order placement","value":3},
{"description":"Ask order cancellation","value":4},
{"description":"Bid order cancellation","value":5}
]
},
{
"description":"Digital goods","value":3,"subtypes":
[
{"description":"Listing","value":0},
{"description":"Delisting","value":1},
{"description":"Price change","value":2},
{"description":"Quantity change","value":3},
{"description":"Purchase","value":4},
{"description":"Delivery","value":5},
{"description":"Feedback","value":6},
{"description":"Refund","value":7}
]
},
{
"description":"Account Control","value":4,"subtypes":
[
{"description":"Effective balance leasing","value":0}
]
}
],
"peerStates":
[
{"description":"Non-connected","value":0},
{"description":"Connected","value":1},
{"description":"Disconnected","value":2}
],
"maxArbitraryMessageLength":1000
}
Get My Info
возвращает данные сервера - хост и адрес.
Запрос
http://localhost:1400/api/getMyInfo
Ответ
{
"host": "HOSTNAME",
"address": "ADDRESS"
}
Где:
- HOSTNAME - имя хоста сервера
- ADDRESS - адрес сервера
Пример
Запрос:
http://localhost:1400/api/getMyInfo
Ответ:
{
"host": "127.0.0.1",
"address": "127.0.0.1"
}
Get Peer
получает данные о заданном узле (peer)
Запрос
http://localhost:1400/api/getPeer?
peer=PEERNAME
Где:
- PEERNAME - имя узла (peer) о котором вы желаете запросить информацию.
Ответ:
Информация возвращается в том виде и объеме, который хранится на сервере узла в файле web.xml file !
{
"platform": "PLATFORM",
"blacklisted": BLACKLIST,
"shareAddress": SHAREADD
"application": "LIBREMONEY",
"weight": WEIGHT,
"hallmark": "HALLMARK",
"state": 1,
"announcedAddress": "ANNOUNCED",
"downloadedVolume": DLBYTES,
"version": "VERSION",
"uploadedVolume": ULBYTES
}
Где:
- PLATFORM строка описывающая платформу указанного сервера
- WEIGHT вес узла
- BLACKLIST указывает включен узел в blacklisted или нет
- SHAREADD указывает является ли узел общедоступным (shared)
- HALLMARK строка в формате hex, описывающая hallmark узла (если он установлен)
- STATE определяет состояние узла. 1 - активный узел; 0 - известный узел.
- ANNOUNCED имя, которое узел сообщает сети (может быть имя DNS, IP-адрес или любая другая строка)
- VERSION версия программного обеспечения, работающего на узле
- DLBYTES and ULBYTES количество байтов, загруженных и выгруженных узлом
Пример
Запрос:
http://localhost:1400/api/getPeer?
peer=23.88.104.217
Ответ:
{
hallmark": "ea53f569819ad8c40d62dd7e4c1f4895b2a3...",
"downloadedVolume": 115001,
"blacklisted": false,
"announcedAddress": "mode.libremoney.org",
"application": "LIBREMONEY",
"weight": 911527,
"uploadedVolume": 4707,
"state": 1,
"version": "0.9.9",
"platform": "lm.now.im",
"shareAddress": true
}
Get Peers
Возвращает все известные вашему клиенту узлы (peers), не зависимо от их состояния на данный момент.
Запрос
http://localhost:1400/api/getPeers
Результат:
Массив имен/адресов узлов:
{
"peers":
[
"PEER",
"PEER",
"PEER"...
]
}
Пример
Запрос:
http://localhost:1400/api/getPeers
Ответ:
{
"peers":
[
"188.226.176.151",
"88.202.37.38",
"87.211.164.253"...
]
}
Get State
Возвращает информацию о статусе/состоянии запрашиваемого сервера
Запрос
http://localhost:1400/api/getState
Ответ
{
"numberOfPolls": NUMPOLLS,
"numberOfVotes": NUMVOTES,
"numberOfTrades": NUMTRADES,
"lastBlock": "LASTBLOCKID",
"numberOfAliases": NUMALIASES,
"lastBlockchainFeeder": "FEEDERPEER",
"numberOfBlocks": HEIGHT,
"numberOfPeers": NUMPEERS
"totalMemory": CURMEMORY,
"freeMemory": FREEMEMORY,
"maxMemory": MAXMEMORY,
"numberOfTransactions": NUMTRANS,
"numberOfUnlockedAccounts": NUMUSERS,
"version": "VERSION",
"numberOfOrders": NUMORDERS,
"totalEffectiveBalance": EFFECTIVEBALANCE
"time": TIME,
"availableProcessors": NUMPROCESSORS,
"numberOfAssets": NUMASSETS,
"cumulativeDifficulty": "CUMEDIFF"
"numberOfAccounts": NUMACCOUNTS
}
Где:
- LASTBLOCKID идентификатор (ID) последнего полученного блока
- NUMALIASES количество известных алиасов в сети
- FEEDERPEER опубликованное имя узла фидера в последнем блоке
- HEIGHT высота блока
- NUMPEERS количество узлов в сети
- CURMEMORY общий объем памяти используемой узлом (в Байтах)
- FREEMEMORY общий объем свободной памяти на узле (в Байтах)
- MAXMEMORY максимальный объем памяти, доступной для использования на узле (в Байтах)
- NUMTRANS число транзакций в blockchain
- NUMUSERS число разблокированных аккаунтов на этом узле
- NUMPOLLS количество опросов на этом узле
- NUMTRADES количество сделок на этом узле
- NUMVOTES количество голосов (для опросов) на этом узле
- NUMORDERS количество ордеров на узле
- EFFECTIVEBALANCE эффективный баланс, актуальный для сети, указанный в LibreMoney-узлах
- NUMPROCESSORS количество процессоров на данном узле
- NUMASSETS число счетов на узле
- CUMEDIFF текущий, накопительный уровень сложности форжинга
- NUMACCOUNTS количество аккаунтов в blockchain
Пример
Запрос:
http://localhost:1400/api/getState
Ответ:
{
"numberOfPeers":868,
"numberOfPolls":0,
"numberOfVotes":0,
"availableProcessors":4,
"totalEffectiveBalance":991634266,
"numberOfAccounts":33172,
"numberOfUnlockedAccounts":0,
"numberOfBlocks":126493,
"numberOfOrders":0,
"numberOfTransactions":182379,
"version":"1.0.0",
"maxMemory":477626368,
"lastBlock":"4329081735143326181",
"totalMemory":466092032,
"numberOfAliases":85657,
"cumulativeDifficulty":"3936422822105943",
"numberOfTrades":0,
"time":13671770,
"numberOfAssets":0,
"lastBlockchainFeeder":"cubie-solar.mjke.de",
"freeMemory":135007384
}
Get Time
Получает текущее время в системе. Внимание ! В LibreMoney время исчисляется в секундах с момента генерации генезисного блока, т.е. с момента зарождения LibreMoney
Запрос
http://localhost:1400/api/getTime
Ответ
{
"time": TIME
}
Где:
- TIME количество секунд прошедших с момента генерации генезисного блока.
Пример
Запрос:
http://localhost:1400/api/getTime
Ответ:
{
"time": 417
}
Get Blockchain Status
Получить текущий статус blockchain
Запрос
http://localhost:1400/api/getBlockchainStatus
Ответ
{
"lastBlock": "LASTBLK",
"lastBlockchainFeederHeight": LASTHEIGHT,
"time": TIME,
"lastBlockchainFeeder": "FEEDERPEER",
"numberOfBlocks": NUMBLKS,
"isScanning": SCAN,
"cumulativeDifficulty": "CUMDIF",
"version": "VER"
}
Where:
- LASTBLK последний блок в blockchain
- LASTHEIGHT высота последнего блока
- TIME число секунд начиная с момента генерации генезисного блока.
- FEEDERPEER опубликованное имя хоста фидера последнего блока
- NUMBLKS общее количество блоков
- SCAN возвращает статус blockchain - происходит сейчас сканирование или нет.
- CUMDIF текущая сложность форжинга
- VER версия LibreMoneyNode который сейчас выполняется
Пример
Запрос:
http://localhost:1400/api/getBlockchainStatus
Ответ:
{
"lastBlock": "3153685344875873318",
"lastBlockchainFeederHeight": 95337,
"time": 14604616,
"lastBlockchainFeeder": "192.241.223.132",
"numberOfBlocks": 95339,
"isScanning": false,
"cumulativeDifficulty": "2406110597084752",
"version": "1.1.0"
}