Приклад запиту до REST API за допомогою bash

Останнє оновлення: 31 березня 2025 р.

Вступ

Впровадження інтерфейсу Kraken REST API за допомогою Bourne Again shell (bash) та деяких пов'язаних команд (openssl, base64, xxd тощо) може бути зручним та ефективним рішенням для взаємодії з ринками Kraken (хоча це не буде найшвидшою реалізацією порівняно з компільованим кодом).

Bash та необхідні команди легко доступні (попередньо встановлені) у більшості систем UNIX, Linux та macOS, а також можуть бути легко встановлені на Windows та інші системи, тому все необхідне програмне забезпечення доступне без використання будь-яких додаткових сторонніх інструментів або бібліотек API.

Використовуючи простий текстовий редактор (навіть такий олдскульний редактор, як vi) і кілька рядків коду, можна отримати доступ як до публічних ринкових даних, так і до приватних даних акаунта, а також розміщувати/скасовувати ордери на ринках Kraken.

Приклад коду

Наступний код демонструє реалізацію коду bash для виклику ендпоїнту Balance REST API:

#!/usr/bin/env bash

# Публічний/приватний ключі API, скопійовані з вебсайту керування акаунтом

api_key='gxTXpC4Ag/N0QPKlYnRhL1qVB2G/HZV1eB2drl7eOXga30dEKoB+EUMs'
api_private='62kRfRX7BI8G8T/jl7clnZ+vSfJt7YmQN23JQkJfHCE6oxecJX4fN4i2RitmRhyFzfJ4efKy2yCo4H068rfv0A=='

# Змінні API (URL, ендпоїнт, nonce тощо)

api_host='https://api.kraken.com'
api_endpoint='/0/private/Balance'
api_nonce=`date +%s`
api_post="nonce=$api_nonce"

# Алгоритм автентифікації (SHA256 та HMAC SHA512)

api_private_hex=`echo -n $api_private base64 -d xxd -p tr -d "\n"`
echo -n $api_endpoint > kapi_bash.bin
echo -n $api_nonce$api_post openssl dgst -sha256 -binary >> kapi_bash.bin
api_sign=`cat kapi_bash.bin openssl dgst -binary -sha512 -mac HMAC -macopt hexkey:$api_private_hex base64`

# HTTP-запит (POST)

curl --header "API-Key: $api_key" --header "API-Sign: $api_sign" --data $api_post $api_host$api_endpoint

і відповідний код також можна завантажити (як файл kapi_bash.sh).

Подальше використання/розробка

Щоб отримати баланси власного акаунта, приклад ключа API слід замінити на ключ API з вашого власного акаунта Kraken, а додаткові ендпоїнти API можна активувати, просто змінивши змінну api_endpoint та змінну api_post (якщо потрібно).

Потрібна додаткова допомога?