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

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

Вступ

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

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

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

Приклад коду

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

#!/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 (якщо потрібно).

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