tera/Doc/Rus/API2.md
progr76@gmail.com 4087d50a65 0.886
2019-02-15 18:56:11 +03:00

177 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API v2 (для бирж и обменников)
API предназначено для облегчения написания сторонних приложений. На стороне сервера выполняется криптография и операции POW. Поэтому оно не рекомендуется для публичного доступа, т.к. не защищено от DDOS атак. Используйте его, если приложения такие как сервер биржи находятся в одной приватной сети.
Данный API доступен если на ноде запущен http-хостинг и включена константа USE_HARD_API_V2.
### Для этого задайте константы:
* HTTP_HOSTING_PORT:80
* USE_HARD_API_V2:1
Несмотря на то что API разработано для использования в POST запросах, в ограниченном режиме его можно использовать для GET запросов.
Формат вызова
```js
{{Server}}/api/v2/{{MethodName}}
```
Пример:
```js
http://194.1.237.94/api/v2/GenerateKeys
```
В качестве результат возвращается JSON, который содержит обязательное поле result со значением:
* 0 - запрос содержит ошибки или результат не возможно получить (например нет такого счета),
* 1 - успешное выполнение запроса
text - опциональное поле содержит подробное описание результата
Все методы поддерживают параметр Meta, если он задан, то это же значение добавляется в результат запроса. Это бывает полезно для организации собственной маршрутизации запросов, часто применяется в микро-сервисных архитектурах.
## GenerateKeys
1)**/api/v2/GenerateKeys** - создание пары приватный ключ - публичный ключ
#### Параметры не обязательны
example:
```js
http://127.0.0.1/api/v2/GenerateKeys
```
return:
```js
{
"result": 1,
"PrivKey": "65C65BE3F436DE58C64461BDC1BF0E2D8AB06C2C4E92470B1F4CDEADB9B2C3FF",
"PubKey": "030809551AD9E0E275082C75EC82E9651BF062821EC6DFE31039B0EDE6A2ED26CC"
}
```
## CreateAccount
2)**/api/v2/CreateAccount** - создание нового счета (аккаунта). В Тере бесплатное создание счета возможно только в промежутках из 10 секунд. Платный вариант приведен в примере 2 метода **Send**
#### Параметры:
* Name - имя счета до 40 байт
* PubKey - публичный ключ в hex-формате
example:
```js
http://127.0.0.1/api/v2/CreateAccount
{
"Name": "Hellow, world",
"PubKey": "0240EDF5ECB25D886FD58DB92A53914FAC975078C1C2EDD1AC292B70C7BC13461F"
}
```
return:
```js
{"result":1,"text":"Added to timer","TxID":"DC316BD766AC654E0AF7260F2E010000","BlockNum":19795750}
```
## Send
3)**/api/v2/Send** - отправка монет с одного счета на другой (требуется указать приватный ключ счета отправителя)
#### Параметры:
* FromID - номер счета отправителя
* FromPrivKey - приватный ключ отправителя в hex-формате
* ToID - номер счета получателя, число или публичный ключ в hex-формате (в этом случае будет создан новый счет с именем заданным в первой строке описания платежа и в качестве оплаты создания счета спишется 10 Тера)
* Amount - сумма, число с плавающей точкой или объект в формате {SumCOIN,SumCENT}
* Description - описание платежка (необязательный параметр)
example1:
```js
http://127.0.0.1/api/v2/Send
{
"FromID": 190085,
"FromPrivKey": "A2D45610FE8AC931F32480BFE3E78D26E45B0A4F88045D6518263DA12FA9C033",
"ToID":190165,
"Amount":10.5,
"Description":"Тест"
}
```
example2 (создание нового счета):
```js
http://127.0.0.1/api/v2/Send
{
"FromID": 190085,
"FromPrivKey": "A2D45610FE8AC931F32480BFE3E78D26E45B0A4F88045D6518263DA12FA9C033",
"ToID":"0240EDF5ECB25D886FD58DB92A53914FAC975078C1C2EDD1AC292B70C7BC13461F",
"Amount":10,
"Description":"New account"
}
```
return:
```js
{"result":1,"text":"OK","TxID":"BE10810FDE7A1317D9DF51D62D010000","BlockNum":19781201}
```
## GetBalance
4)**/api/v2/GetBalance** - получить баланс счета
#### Параметры:
* AccountID - номер счета
example:
```js
http://127.0.0.1/api/v2/GetBalance
{
"AccountID": 0
}
```
return:
```js
{
"result": 1,
"SumCOIN": 580222966,
"SumCENT": 527313901
}
```
## GetTransaction
5)**/api/v2/GetTransaction** - получить транзакцию (возвращает объект с содержимым транзакции)
#### Параметры:
* TxID - ИД транзакции в hex-формате
example:
```js
http://127.0.0.1/api/v2/GetTransaction
{
"TxID": "BE10810FDE7A1317D9DF51D62D010000"
}
```
return:
```js
{
"Type": 111,
"Version": 3,
"Reserve": 0,
"FromID": 190085,
"To": [
{
"PubKey": "",
"ID": 190165,
"SumCOIN": 1,
"SumCENT": 0
}
],
"Description": "New6",
"OperationID": 41,
"Body": "",
"Sign": "8C761F539A6A24427CF810A49140CA1FFBF0F3A48DCF58AEE0DD9E4A4E631E1A1B6DA86ED6E2EF92DBF537270AA02B5EAE3A7C822B3F70628CAD78525ED9E0F7",
"result": 1
}
```
## GetHistoryTransactions
6)**/api/v2/GetHistoryTransactions** - получить историю транзакций счета
#### **TODO**