API

Front-end сервис

Глобально API строится вокруг 4х методов:

  1. Отправка транзакций.

  2. Чтение состояние аккаунта.

  3. Чтение истории транзакций.

  4. Получение дополнительной информации.

Сервис сейчас в альфа-версии. Т.е. API будет меняться.

Отправка транзакции

Позволяет отправлять транзакции для подтверждения на пире.

Коды ответов

  • 201 - успешная отправка транзакции.

  • 400 - ошибка отправки (в теле ответа будет сообщение об ошибке в поле error).

  • 500 - внутренняя ошибка (как правило, связана с парсингом данных).

POST http://127.0.0.1:8180/v1/backlog

{"commands":[{"data":{"alg":"ed25519","id":"EON-27Z6X-N77SJ-B8GEM","key":"9zUema0KRJFkx2mC4HjEZZ0xCH0MMAdGH34rXfz2p4o="},"deadline":300,"id":"CMD-GC3KG-HB3LK-2ETBN","network":"core.dev.Ti2YGY","publisher":"EON-HRAEQ-8NZL7-C9LHJ","timestamp":1592296782,"type":"core.auth.pk.new","version":1}],"confirmations":{"EON-HRAEQ-8NZL7-C9LHJ":"HyZIa5n3fKxlUY6lnJVjYhAICGnIPi2czQnW7T+h/CDJORR5gJPfmYaIP22/yHCHWhfCkWV4aLZkc2k6XcePAg=="},"deadline":300,"fee":1000,"id":"TX-GC3KG-HFN93-GHF6R","publisher":"EON-HRAEQ-8NZL7-C9LHJ","timestamp":1592296782,"version":1}
{"code":0}

Чтение состояние аккаунта

Чтение ключа/проверка существования аккаунта

По EON-ACC-ID позволяет получить публичный ключ. Если аккаунт не существует - вернет 404.

GET http://{PROXY}/v1/accounts/{EON-ACC-ID}/state

Пример:

GET http://127.0.0.1:8180/v1/accounts/EON-HRAEQ-8NZL7-C9LHJ/state
{
    "id": "EON-HRAEQ-8NZL7-C9LHJ",
    "public_key": {
        "algorithm": "ed25519",
        "value": "s6X2I0RzdMIu60CR4B4bJD6gXy2541I+++BjLwpfPGE="
    }
}

Чтение всего состояния

Запрос:

GET http://127.0.0.1:8180/v1/raw/EON-HRAEQ-8NZL7-C9LHJ/

Ответ:

{
    "core.auth.pk.alg": "ed25519",
    "core.auth.pk.value": "s6X2I0RzdMIu60CR4B4bJD6gXy2541I+++BjLwpfPGE=",
    "core.balance": 1000000000000000,
    "core.charge.timestamp": 0,
    "core.charge.value": 0,
    "core.created": 0,
    "core.deposit": 1000000000000000,
    "core.version": 1
}

Если аккаунта не существует - вернется пустой JSON-объект: {}.

Чтение части состояния

Запрос:

GET http://127.0.0.1:8180/v1/raw/EON-HRAEQ-8NZL7-C9LHJ/core.auth.pk

Ответ:

{
    "alg": "ed25519",
    "value": "s6X2I0RzdMIu60CR4B4bJD6gXy2541I+++BjLwpfPGE="
}

Если аккаунта не существует или запрашиваемой области данных нет - вернется пустой JSON-объект: {}

Если полностью указать ключ к данным, то в ответе данные находятся по ключу "", например для core.auth.pk.alg: {"":"ed25519"}.

Чтение истории транзакций

Получение последних транзакций

GET http://127.0.0.1:8180/v1/accounts/EON-HRAEQ-8NZL7-C9LHJ/transactions
GET http://127.0.0.1:8180/v1/accounts/EON-HRAEQ-8NZL7-C9LHJ/transactions?page=1&limit=30
[
    {
        "commands": [
            {
                "data": {
                    "alg": "ed25519",
                    "id": "EON-27Z6X-N77SJ-B8GEM",
                    "key": "9zUema0KRJFkx2mC4HjEZZ0xCH0MMAdGH34rXfz2p4o="
                },
                "deadline": 300,
                "id": "CMD-GC3KG-HB3LK-2ETBN",
                "network": "core.dev.Ti2YGY",
                "publisher": "EON-HRAEQ-8NZL7-C9LHJ",
                "timestamp": 1592296782,
                "type": "core.auth.pk.new",
                "version": 1
            }
        ],
        "confirmations": {
            "EON-HRAEQ-8NZL7-C9LHJ": "HyZIa5n3fKxlUY6lnJVjYhAICGnIPi2czQnW7T+h/CDJORR5gJPfmYaIP22/yHCHWhfCkWV4aLZkc2k6XcePAg=="
        },
        "deadline": 300,
        "fee": 1000,
        "id": "TX-GC3KG-HFN93-GHF6R",
        "publisher": "EON-HRAEQ-8NZL7-C9LHJ",
        "timestamp": 1592296782,
        "version": 1
    }
]

Получение конкретной транзакции

GET http://127.0.0.1:8180/v1/transactions/TX-GC3KG-HFN93-GHF6R
{
    "block": "block-123",
    "commands": [
        {
            "data": {
                "alg": "ed25519",
                "id": "EON-27Z6X-N77SJ-B8GEM",
                "key": "9zUema0KRJFkx2mC4HjEZZ0xCH0MMAdGH34rXfz2p4o="
            },
            "deadline": 300,
            "id": "CMD-GC3KG-HB3LK-2ETBN",
            "network": "core.dev.Ti2YGY",
            "publisher": "EON-HRAEQ-8NZL7-C9LHJ",
            "timestamp": 1592296782,
            "type": "core.auth.pk.new",
            "version": 1
        }
    ],
    "confirmations": {
        "EON-HRAEQ-8NZL7-C9LHJ": "HyZIa5n3fKxlUY6lnJVjYhAICGnIPi2czQnW7T+h/CDJORR5gJPfmYaIP22/yHCHWhfCkWV4aLZkc2k6XcePAg=="
    },
    "deadline": 300,
    "fee": 1000,
    "id": "TX-GC3KG-HFN93-GHF6R",
    "publisher": "EON-HRAEQ-8NZL7-C9LHJ",
    "timestamp": 1592296782,
    "version": 1
}

Чтение истории блоков

Структура заголовка блока

  • id : String - идентификатор блока (просто строка, разные алгоритмы синхронизации могут использовать разный формат идентификатора).

  • prev : String - идентификатор предыдущего блока (просто строка).

  • height : long - высота.

  • timestamp : long - время создания.

Пример:

{
    "id": "block-900",
    "prev": "block-899",
    "height": 900,
    "timestamp": 1582095023
}

Получение заголовка последнего блока

http://127.0.0.1:8180/v1/blocks/last

Получение заголовка блока по идентификатору

http://127.0.0.1:8180/v1/blocks/id/block-5

Получение заголовка блока по высоте

http://127.0.0.1:8180/v1/blocks/height/900

Получение транзакций блока

http://127.0.0.1:8180/v1/blocks/id/block-5/transactions

Чтение дополнительной информации

Получение идентификатора сети

GET http://127.0.0.1:8180/v1/info/network
{
    "network": "core.dev.Ti2YGY"
}

Получение текущей комиссии

GET http://127.0.0.1:8180/v1/info/fee

Возвращается 2 параметра - размер и комиссия за транзакцию такого размера. Такое решение должно повысить точность расчета комиссии. Для получения комиссии за байт транзакции необходимо рассчитать fee / size.

{
    "fee": 1000,
    "size": 1000
}

Получение времени сети

GET http://127.0.0.1:8180/v1/info/timestamp
{
    "timestamp": 1588838916
}

Сервис регистрации аккаунтов (только для внутреннего использования)

Для доступа к сервису необходимо указать токен доступа в заголовке запроса: Authorization: Bearer <token>.

Проверить статус аккаунта

GET http://127.0.0.1:8180/v1/accounts/EON-HRAEQ-8NZL7-C9LHJ

Ответ:

{
    "id": "EON-HRAEQ-8NZL7-C9LHJ",
    "public_key": {
        "algorithm": "ed25519",
        "value": "s6X2I0RzdMIu60CR4B4bJD6gXy2541I+++BjLwpfPGE="
    }
}

Зарегистрировать аккаунт

POST http://127.0.0.1:8180/v1/accounts/

{
    "id": "EON-HRAEQ-8NZL7-C9LHJ",
    "public_key": {
        "algorithm": "ed25519",
        "value": "s6X2I0RzdMIu60CR4B4bJD6gXy2541I+++BjLwpfPGE="
    }
}

Возможные статусы ответа:

  • 201 Created - аккаунт успешно создан.

  • 400 Bad Request - ошибка создания аккаунта. Пример ответа: {"code":1,"error":"Public key already exists"}.

  • 500 Internal Server Error - внутренняя ошибка сервера.

Last updated