BitBay

The BitBay Developer Hub

Welcome to the BitBay developer hub. You'll find comprehensive guides and documentation to help you start working with BitBay as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Wprowadzenie

 

API BitBay zostało zaprojektowane w celu udzielenia wygodnego dostępu do zasobów serwisu w zakresie pobierania danych oraz wykonywania operacji przy użyciu oprogramowania zewnętrznego. Z łatwością może zostać użyte do tworzenia dynamicznych wykresów ze statystykami dowolnych rynków, czy zaprojektowania autonomicznej aplikacji grającej na giełdzie.

Jeżeli podczas przeglądania dokumentacji zauważyłeś błąd lub masz ciekawe sugestie dotyczące funkcjonalności i rozbudowy, skontaktuj się z nami poprzez formularz kontaktowy.

Adres bazowy, pod którym dostępne jest API: https://api.bitbay.net/rest

W niniejszej dokumentacji, dla uproszczenia wszystkie endpointy będą nazywane metodami.
Wywołanie konkretnej metody, np. dostęp do tickera (szczegóły zostaną opisane w dalszej części) będzie wyglądać następująco: https://api.bitbay.net/rest/trading/ticker

Wszystkie parametry czasowe zwracane przez API są w formacie UNIX timestamp z dokładnością do milisekund.
Zapytania muszą zawierać nagłówek Content-type: application/json, w innym przypadku mogą zostać niepoprawnie przetworzone.

Ponieważ wszystkie odpowiedzi są zwracane z kodem "200 OK" - każda metoda zwraca w odpowiedzi swój status wykonania.
W przypadku niepoprawnego wykonania - w odpowiedzi zostanie zwrócony status: Fail oraz w odpowiedzi pojawi się dodatkowy parametr errors, zawierający tablicę z komunikatami o błędach.

Pomoc

 

Masz ciekawe sugestie jak jeszcze bardziej możemy ulepszyć naszą platformę? Natrafiłeś na dodatkową trudność z integracją lub już nawet udało Ci się ją obejść?
Dołącz do naszej społeczności na Gitterze i podziel się swoją wiedzą oraz doświadczeniem!

Limity

 

Aby zaoferować możliwie najlepszą obsługę, akcje są ograniczone ilością zapytań, którą można wykonać w ciągu jednej minuty.

Akcja
Maksymalna ilość zapytań na minutę

Wystawienie oferty

200

Anulowanie oferty

200

Pobranie listy wystawionych ofert

200

Pobranie listy transakcji

100

Pobranie konfiguracji rynku

100

Zmiana konfiguracji rynku

20

Wymiana w kantorze

30

Pobranie historii kantoru

30

Pobranie kursu kantoru

70

Wszystkie pozostałe

60

Komunikaty błędów

 

W przypadku niepowodzenia wykonania zapytania zostanie zwrócony status "Fail" wraz z dodatkowym parametrem errors, który zawiera tablicę z komunikatem o błędzie. Listę ogólnych komunikatów o błędach znajdziesz poniżej, natomiast pozostałe będą przypisane do konkretnej kategorii metod, w której mogą wystąpić.

Komunikat błędu
Opis

PERMISSIONS_NOT_SUFFICIENT

Uprawnienia nadane kluczowi API nie są wystarczające do wykonania akcji.

INVALID_HASH_SIGNATURE

Wygenerowany podpis zapytania (API-Hash) jest niepoprawny.

RESPONSE_TIMEOUT

Czas odpowiedzi od modułu został przekroczony.

TIMEOUT

Nieprawidłowe odwołanie do metody: nieobsługiwane parametry / nieobsługiwany typ zapytania / błąd w nazwie odwołania.

ACTION_BLOCKED

Akcja jest zablokowana na koncie użytkownika.

ACTION_LIMIT_EXCEEDED

Limit wywołań akcji został wykorzystany, należy odczekać do następnej pełnej minuty przed kolejnym zapytaniem.

UNDER_MAINTENANCE

Prowadzone są obecnie prace konserwacyjne lub wprowadzane aktualizacje. W odpowiedzi zostanie zwrócone również dodatkowe pole estimatedTime z wartością Timestampa, który informuje o planowanym zakończeniu prac.

Trading

 

Ticker

Ticker zapewnia ogólny przegląd konfiguracji i statystyk wszystkich rynków lub jedynie wybranego - w tym celu wystarczy dodać kod rynku w adresie. Pokazuje wartość najmniejszej transakcji, jaką możemy przeprowadzić oraz liczbę miejsc po przecinku dla konkretnej waluty z wybranego rynku. Zwraca również bieżącą najlepszą ofertę kupna i sprzedaży, a także ostatnią i przedostatnią cenę transakcji.

 
gethttps://api.bitbay.net/rest/trading/ticker/kod_rynku
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/ticker",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/ticker',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/ticker")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
import requests

url = "https://api.bitbay.net/rest/trading/ticker"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "ticker": {
    "market": {
      "code": "BTC-PLN",
      "first": {
        "currency": "BTC",
        "minOffer": 0.00003,
        "scale": 8
      },
      "second": {
        "currency": "PLN",
        "minOffer": 0.1,
        "scale": 2
      }
    },
    "time": 1529498308810,
    "highestBid": 24600.23,
    "lowestAsk": 24647,
    "rate": 24640,
    "previousRate": 24625.96
  }
}
{
  "status": "Fail",
  "errors": [
    "MARKET_NOT_RECOGNIZED"
  ]
}
 

Path Params

kod_rynku
string

Opcjonalnie: kod rynku z którego chcesz pozyskać informacje.

W przypadku wykonania jedynie dla wybranego rynku, pełny adres będzie następujący:
https://api.bitbay.net/rest/trading/ticker/BTC-PLN

Szczegóły odpowiedzi

Klucz
Typ
Opis

ticker

array

code

string

Kod rynku dla którego zostało wykonane zapytanie.

first / second

array

Tablica informacji pierwszej / drugiej waluty z pary.

  • currency

string

Kod waluty z wybranego rynku.

  • minOffer

decimal

Minimalna wartość waluty jaką można wystawić.

  • scale

integer

Ilość miejsc po przecinku obsługiwana przez daną walutę.

time

Unix Timestamp

Czas aktualizacji danych.

highestBid

decimal

Aktualnie najlepszy kurs dla ofert kupna

lowestAsk

decimal

Aktualnie najlepszy kurs dla ofert sprzedaży

rate

decimal

Kurs ostatniej transakcji.

previousRate

decimal

Kurs przedostatniej transakcji.

Statystyki rynków

Wyświetla statystyki z ostatnich 24 godzin: najwyższej i najniższej oferty oraz wartość wolumenu. Możemy je pobrać dla wybranego przez nas rynku lub dla wszystkich w przypadku pustego parametru dla kodu rynku.

 
gethttps://api.bitbay.net/rest/trading/stats/kod_rynku
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/stats",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/stats',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/stats")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
import requests

url = "https://api.bitbay.net/rest/trading/stats"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "stats": {
    "m": "BTC-PLN",
    "h": "32841.02",
    "l": "31173.99",
    "v": "2538.53749287",
    "r24h": "31155.76"
  }
}
{
  "status": "Fail",
  "errors": [
    "STATS_COULD_NOT_BE_LOADED"
  ]
}
 

Path Params

kod_rynku
string

Opcjonalnie: kod rynku z którego chcesz pozyskać informacje.

W przypadku wykonana jedynie dla wybranego rynku, pełny adres będzie następujący:
https://api.bitbay.net/rest/trading/stats/BTC-PLN

Szczegóły odpowiedzi

Klucz
Typ
Opis

stats

array

  • m

string

Kod rynku.

  • h

decimal

Najwyższy kurs z ostatnich 24 godzin.

  • l

decimal

Najniższy kurs z ostatnich 24 godzin.

  • v

decimal

Wolumen z ostatnich 24 godzin.

  • r24h

decimal

Średni kurs z ostatnich 24 godzin.

Orderbook

Zwraca listę 300 najwyższych ofert kupna i 300 najniższych ofert sprzedaży.

 
gethttps://api.bitbay.net/rest/trading/orderbook/kod_rynku
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/orderbook/BTC-PLN",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/orderbook/BTC-PLN',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/orderbook/BTC-PLN")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
import requests

url = "https://api.bitbay.net/rest/trading/orderbook/BTC-PLN"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "sell": [
    {
      "ra": "25285.31",
      "ca": "0.02839638",
      "sa": "0.02839638",
      "pa": "0.02839638",
      "co": 1
    }
  ],
  "buy": [
    {
      "ra": "25280",
      "ca": "0.82618498",
      "sa": "3.59999",
      "pa": "0.82618498",
      "co": 1
    }
  ],
  "timestamp": "1529512856512",
  "seqNum": "139098"
}
{
  "status": "Fail",
  "errors": [
    "MARKET_NOT_RECOGNIZED"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku z którego chcesz pozyskać informacje.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

sell / buy

array

  • ra

decimal

Kurs pozycji.

  • ca

decimal

Obecna ilość kryptowaluty w pozycji.

  • sa

decimal

Początkowa ilość kryptowaluty w pozycji.

  • pa

decimal

Ilość kryptowaluty w pozycji przed ostatnią zmianą.

  • co

integer

Ilość ofert na którą składa się pozycja.

timestamp

Unix Timestamp

Czas dla jakiego wszystkie powyżej wartości są aktualne.

seqNum

integer

Numer sekwencyjny. Pozwala zachować kolejność otrzymywanych danych.

Orderbook limitowany

Zwraca listę 10 / 50 / 100 najwyższych ofert kupna i najniższych ofert sprzedaży.

 
gethttps://api.bitbay.net/rest/trading/orderbook-limited/kod_rynku/limit
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/orderbook-limited/BTC-PLN/10",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/orderbook-limited/BTC-PLN/10',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/orderbook-limited/BTC-PLN/10")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
import requests

url = "https://api.bitbay.net/rest/trading/orderbook-limited/BTC-PLN/10"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "sell": [
    {
      "ra": "25285.31",
      "ca": "0.02839638",
      "sa": "0.02839638",
      "pa": "0.02839638",
      "co": 1
    }
  ],
  "buy": [
    {
      "ra": "25280",
      "ca": "0.82618498",
      "sa": "3.59999",
      "pa": "0.82618498",
      "co": 1
    }
  ],
  "timestamp": "1529512856512",
  "seqNo": "139098"
}
{
  "status": "Fail",
  "errors": [
    "MARKET_NOT_RECOGNIZED"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku z którego chcesz pozyskać informacje.

limit
int32
required

Limit pobieranych ofert. Dostępne wartości: 10 / 50 / 100.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

sell / buy

array

  • ra

decimal

Kurs pozycji.

  • ca

decimal

Obecna ilość kryptowaluty w pozycji.

  • sa

decimal

Początkowa ilość kryptowaluty w pozycji.

  • pa

decimal

Ilość kryptowaluty w pozycji przed ostatnią zmianą.

  • co

integer

Ilość ofert na którą składa się pozycja.

timestamp

Unix Timestamp

Czas dla jakiego wszystkie powyżej wartości są aktualne.

seqNo

integer

Numer sekwencyjny. Pozwala zachować kolejność otrzymywanych danych.

Ostatnie transakcje

Zwraca listę ostatnich transakcji dla wybranego rynku. Bez uwzględnienia dodatkowych parametrów otrzymujemy ostatnie 10 transakcji.

 
gethttps://api.bitbay.net/rest/trading/transactions/kod_rynku
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/transactions/BTC-PLN",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/transactions/BTC-PLN',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/transactions/BTC-PLN")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
import requests

url = "https://api.bitbay.net/rest/trading/transactions/BTC-PLN"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "items": [
    {
      "id": "f9ff807c-ec8d-4654-b12a-aa3f6fdcf94c",
      "t": "1529515852759",
      "a": "0.04016101",
      "r": "25111.14",
      "ty": "Sell"
    },
    {
      "id": "952d5907-f6db-4fc1-a01a-d39371233115",
      "t": "1529515819014",
      "a": "0.01491232",
      "r": "25147",
      "ty": "Buy"
    }
  ]
}
{
  "status": "Fail",
  "errors": [
    "MARKET_NOT_RECOGNIZED"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku z którego chcesz pozyskać informacje.

Query Params

limit
int32

Określa ilość zwracanych transakcji. Maksymalnie: 300.

fromTime
date-time

Czas od którego chcemy pobrać transakcje.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

items

array

  • id

UUID

ID transakcji.

  • t

Unix Timestamp

Czas transakcji.

  • a

decimal

Ilość kryptowaluty w transakcji.

  • r

decimal

Kurs transakcji.

  • ty

string

Typ transakcji: buy / sell.

Wykres świec

Zwraca statystyki świec dla wybranych przez nas parametrów czasowych.

 
gethttps://api.bitbay.net/rest/trading/candle/history/kod_rynku/rozdzielczosc
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/candle/history/BTC-PLN/900?from=1543410329000&to=1543410329000",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/candle/history/BTC-PLN/900?from=1543410329000&to=1543410329000',
  headers: { 'content-type': 'application/json' },
  qs: { "from": "1514797200000", "to": "1514800800000"}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/candle/history/BTC-PLN/900?from=1543410329000&to=1543410329000")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
import requests

url = "https://api.bitbay.net/rest/trading/candle/history/BTC-PLN/900?from=1543410329000&to=1543410329000"

querystring = {"from":"1514797200000","to":"1514800800000"}

response = requests.request("GET", url, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "items": [
    [
      "1530742800000",
      {
        "o": "25045.87",
        "c": "25046.03",
        "h": "25130.93",
        "l": "25043.59",
        "v": "0.22349329"
      }
    ],
    [
      "1530743100000",
      {
        "o": "25003.51",
        "c": "25125",
        "h": "25125",
        "l": "24960.81",
        "v": "0.15407649"
      }
    ]
  ]
}
{
  "status": "Fail",
  "errors": [
    "MARKET_NOT_RECOGNIZED"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku z którego chcesz pozyskać informacje.

rozdzielczosc
int32
required

Czas w sekundach dla jakiego ma zostać narysowana świeca. Lista dostępnych rozdzielczości znajduje się poniżej.

Query Params

from
date-time

Czas od którego chcemy pobrać statystyki.

to
date-time

Czas do którego chcemy pobrać statystyki.

 

Dostępne rozdzielczości:

Rozdzielczość
Wartość

1 minuta

60

3 minuty

180

5 minut

300

15 minut

900

30 minut

1800

1 godzina

3600

2 godziny

7200

4 godziny

14400

6 godzin

21600

12 godzin

43200

1 dzień

86400

3 dni

259200

1 tydzień

604800

Szczegóły odpowiedzi

Klucz
Typ
Opis

Unix Timestamp

Czas dla jakiego została wygenerowana świeczka.

o

decimal

Kurs otwarcia.

c

decimal

Kurs zamknięcia.

h

decimal

Najwyższa wartość kursu.

l

decimal

Najniższa wartość kursu.

v

decimal

Wygenerowany wolumen.

Autoryzacja

 

Punkty końcowe, które wymagają autoryzacji użytkownika będą dalej nazywane “metodami prywatnymi”. By z nich korzystać, należy utworzyć parę kluczy umożliwiających autoryzację tworzonej aplikacji. Można to zrobić pod adresem https://auth.bitbay.net/settings/api
Konkretna para kluczy powinna mieć uprawnienia tylko do modułów, z których rzeczywiście będzie korzystać. Parametry muszą zostać wysłane w formacie JSON, który umożliwia wygenerowanie hasza.

Aby odnieść się do dowolnej metody prywatnej, w nagłówku muszą znaleźć się następujące parametry autoryzacyjne:

Klucz
Opis

API-Key

Klucz publiczny w jawnej formie.

API-Hash

HMAC("SHA512", klucz_publiczny + aktualny_timestamp + parametry_metody_JSON, klucz prywatny)

operation-id

Jednorazowy, losowo wygenerowany UUID operacji.

Request-Timestamp

Aktualny czas w formacie UNIX Timestamp. Ta sama wartość musi zostać użyta do wygenerowania hasza.

Content-Type

Dwuczęściowy identyfikator formatu plików, domyślnie: application/json.

Wartość API-Hash jest wygenerowaną wartością HMAC przy użyciu funkcji haszującej algorytmem SHA512 dla następujących danych:

  • Klucz publiczny
  • Aktualny czas w formacie UNIX Timestamp
  • Dane, które zostały przesłane w formacie JSON (tylko w przypadku metod POST)
  • Klucz prywatny (w niektórych bibliotekach podawany jest on jako osobny parametr będący kluczem szyfrowania)

Przykładowe wartości autoryzacji oraz gotowy kod:

API-Key: 12345f6f-1b1d-1234-a973-a10b1bdba1a1
API-Hash: 8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720
operation-id: 78539fe0-e9b0-4e4e-8c86-70b36aa93d4f
Request-Timestamp: 1529897422
Content-Type: application/json
<?php
class bitbayAPI

{
	private $pubkey = '';
	private $privkey = '';
  
	public function __construct($pubkey, $privkey)
	{
		$this->pubkey = $pubkey;
		$this->privkey = $privkey;
	}

	public function GetUUID($data)
	{
		assert(strlen($data) == 16);
		$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
		$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
		return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data) , 4));
	}

	public function callApi($method, $params = null, $type = 'GET')
	{
		$post = null;
		if (($type == 'GET') && is_array($params)):
			$method = $method . '?query=' . urlencode(json_encode($params));
		elseif (($type == 'POST' || $type == 'PUT' || $type == 'DELETE') && is_array($params) && (count($params) > 0)):
			$post = json_encode($params);
		endif;
		$time = time();
		$sign = hash_hmac("sha512", $this->pubkey . $time . $post, $this->privkey);
		$headers = array(
			'API-Key: ' . $this->pubkey,
			'API-Hash: ' . $sign,
			'operation-id: ' . GetUUID(random_bytes(16)) ,
			'Request-Timestamp: ' . $time,
			'Content-Type: application/json'
		);
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $type);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_URL, 'https://api.bitbay.net/rest/' . $method);
		if ($type == 'POST' || $type == 'PUT' || $type == 'DELETE') {
			curl_setopt($curl, CURLOPT_POST, true);
			curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
		}

		curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
		$ret = curl_exec($curl);
		$info = curl_getinfo($curl);
		return $ret;
	}
}
'use strict'

const uuidv4 = require('uuid/v4');
const crypto = require('crypto');

const apiKey = '48249e33-fbad-4805-a752-a82fe216e933';
const apiSecret = '12cd3901-1d4f-4b24-82ef-fbbc36638b7c';
var body = null;

function getHash(apiKey, timestamp, apiSecret, body) {
    const hmac = crypto.createHmac('sha512', apiSecret);

    if (body)
        hmac.update(apiKey + timestamp + JSON.stringify(body));
    else
        hmac.update(apiKey + timestamp);

    return hmac.digest('hex');
};

let timestamp = Date.now();
var headers = {
    'API-Key': apiKey,
    'API-Hash': getHash(apiKey, timestamp, apiSecret, body),
    'operation-id': uuidv4(),
    'Request-Timestamp': timestamp,
    'Content-Type': 'application/json'
};
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

public abstract class APIHashGenerator {

  public static String gemerate(String data, String key) {

        String result = "";

        try{
            byte [] byteKey = key.getBytes("UTF-8");
            final String HMAC_SHA512 = "HmacSHA512";
            Mac sha512_HMAC = null;
            sha512_HMAC = Mac.getInstance(HMAC_SHA512);
            SecretKeySpec keySpec = new SecretKeySpec(byteKey, HMAC_SHA512);
            sha512_HMAC.init(keySpec);
            byte [] mac_data = sha512_HMAC.
                    doFinal(data.getBytes("UTF-8"));
            result = bytesToHex(mac_data);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return result;
    }
  
    private static String bytesToHex(byte[] hashInBytes) {

        StringBuilder sb = new StringBuilder();

        for (byte b : hashInBytes) {
            sb.append(String.format("%02x", b));
        }

        return sb.toString();

    }
}

Trading

 

Nowa oferta

Na rynku BitBay możesz stworzyć następujące typy ofert: limit, market, fill or kill, immediate or cancel lub post only. Szczegółowy opis każdej z nich znajdziesz poniżej. W przypadku gdy któryś z parametrów jest nieużywany, należy przypisać mu wartość null.

 
posthttps://api.bitbay.net/rest/trading/offer/kod_rynku
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/offer/BTC-PLN",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"amount\":0.45,\"rate\":23000,\"offerType\":\"sell\",\"mode\":\"limit\",\"postOnly\":false,\"fillOrKill\":false}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'POST',
  url: 'https://api.bitbay.net/rest/trading/offer/BTC-PLN',
  headers: { 'content-type': 'application/json' },
  body: '{"amount":0.45,"rate":23000,"offerType":"sell","mode":"limit","postOnly":false,"fillOrKill":false}' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/offer/BTC-PLN")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request.body = "{\"amount\":0.45,\"rate\":23000,\"offerType\":\"sell\",\"mode\":\"limit\",\"postOnly\":false,\"fillOrKill\":false}"

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/offer/BTC-PLN"

payload = "{\"amount\":0.45,\"rate\":23000,\"offerType\":\"sell\",\"mode\":\"limit\",\"postOnly\":false,\"fillOrKill\":false}"
response = requests.request("POST", url, data=payload)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "completed": true,
  "offerId": "6388963b-1d0d-4a70-ab6b-2ada1f9c06ea",
  "transactions": [
    {
      "amount": "0.00005",
      "rate": "21980.02"
    }
  ]
}
{
  "status": "Fail",
  "errors": [
    "FUNDS_NOT_SUFFICIENT"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku z którego chcesz pozyskać informacje.

Body Params

amount
float
required

Ilość kryptowaluty.

rate
float
required

Kurs oferty.

price
float

Całkowita wartość oferty. Ma zastosowanie tylko przy ofercie typu market i w przypadku zastosowania - zastępuje wartość rate. Prawidłowe użycie zostało przedstawione poniżej.

offerType
string
required

Typ oferty: buy /sell.

mode
string
required

Sposób utworzenia oferty: limit / market.

postOnly
boolean

Czy oferta jest typu post only.

fillOrKill
boolean

Czy oferta jest typu fill or kill.

immediateOrCancel
boolean

Czy oferta jest typu immediateOrCancel.

firstBalanceId
string

UUID portfela dla pierwszej waluty z wybranego rynku. Bez podania parametru transakcja zostanie wykonana wykorzystując domyślny portfel.

secondBalanceId
string

UUID portfela dla drugiej waluty z wybranego rynku. Bez podania parametru transakcja zostanie wykonana wykorzystując domyślny portfel.

 

Limit - standardowy sposób wykonywania ofert, domyślny widok na giełdzie.

Market - szybkie kupno i szybka sprzedaż. Przy tej metodzie ustawiamy jedynie parametr offerType na sell lub buy oraz pola amount lub price w zależności od tego, jak oferta ma zostać zrealizowana. Ustawiając pole price, transakcja zostanie zrealizowana, by uzupełnić się do danej kwoty. Z kolei ustawiając pole amount, transakcje będą realizowane, by zrealizować określoną ilość kryptowaluty.

Post only - daje pewność, że zawsze zapłacisz prowizję typu "Maker". Przy próbie wystawienia oferty tego typu masz pewność, że zostanie ona wystawiona do listy ofert (orderbook) lub anulowana (w przypadku, gdyby miało dojść do transakcji).

Fill or Kill - jest to oferta limitowana, która musi zostać zrealizowana natychmiast i w całości, lub zostanie anulowana. Celem korzystania z tego typu oferty jest upewnienie się, że pozycja jest wprowadzana natychmiast, zrealizowana w całości i po określonym kursie.

IOC (Immediate or Cancel) - jest ofertą limitowaną, która pozwala na natychmiastowy zakup, bądź sprzedaż kryptowaluty po wskazanym przez użytkownika kursie lub korzystniejszym. W przeciwieństwie do Fill or Kill, IOC pozwala na częściową realizację zakupu/sprzedaży, jeśli cała oferta nie będzie mogła zostać zrealizowana natychmiastowo.

W przypadku gdy któryś z wymaganych parametrów jest nieużywany, należy przypisać mu wartość null.

{
  "offerType": "BUY",
  "amount": "20",
  "price": null,
  "rate": null,
  "postOnly": false,
  "mode": "market",
  "fillOrKill": false
}
{
  "offerType": "BUY",
  "amount": null,
  "price": "500",
  "rate": null,
  "postOnly": false,
  "mode": "market",
  "fillOrKill": false
}
{
  "offerType": "SELL",
  "amount": "1",
  "price": null,
  "rate": "24600",
  "postOnly": false,
  "mode": "limit",
  "fillOrKill": false
}
{
  "offerType": "BUY",
  "amount": "100",
  "price": null,
  "rate": "0.8",
  "postOnly": true,
  "mode": "limit",
  "fillOrKill": false
}
{
  "offerType": "BUY",
  "amount": "11",
  "price": null,
  "rate": "230.11",
  "postOnly": false,
  "mode": "limit",
  "fillOrKill": true
}
{
  "offerType": "SELL",
  "amount": "10",
  "price": null,
  "rate": "1.07",
  "postOnly": false,
  "mode": "limit",
  "immediateOrCancel": true
}

Szczegóły odpowiedzi

Klucz
Typ
Opis

completed

boolean

Czy oferta została od razu zrealizowana w całości.

offerId

UUID

Identyfikator oferty.

transactions

array

Tablica zrealizowanych transakcji podczas wystawiania oferty:

  • amount

decimal

Ilość kryptowaluty w transakcji.

  • rate

decimal

Kurs wykonanej transakcji.

Aktywne oferty

Zwraca tablicę aktywnych ofert dla wybranego lub wszystkich dostępnych rynków.

 
gethttps://api.bitbay.net/rest/trading/offer/kod_rynku
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/offer",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/offer',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/offer")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/offer"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
   "status":"Ok",
   "items":[
      {
         "market":"BTC-PLN",
         "offerType":"Sell",
         "id":"f424817e-9910-4688-8f08-50336d88f4c6",
         "currentAmount":"0.001",
         "lockedAmount":"0.001",
         "rate":"30000",
         "startAmount":"0.001",
         "time":"1508230579837",
         "postOnly":false,
         "mode":"limit",
         "receivedAmount":"0",
         "firstBalanceId": "aa1c89b7-103a-4ad2-8002-b4a6fd03b60c",
         "secondBalanceId": "6c25f724-4b07-4a0f-bad2-8432ffc07b12"
      }
   ]
}
{
  "status": "Fail",
  "errors": [
    "MALFORMED_REQUEST"
  ]
}
 

Path Params

kod_rynku
string

Opcjonalnie: kod rynku z którego chcesz pozyskać informacje.

W przypadku wykonana jedynie dla wybranego rynku, pełny adres będzie następujący:
https://api.bitbay.net/rest/trading/offer/BTC-PLN

Szczegóły odpowiedzi

Klucz
Typ
Opis

data

array

market

string

Kod marketu.

offerType

string

Typ oferty: buy / sell.

id

UUID

UUID oferty.

currentAmount

decimal

Aktualna ilość kryptowaluty w pozycji.

lockedAmount

decimal

Ilość kryptowaluty zablokowana na koncie.

rate

decimal

Kurs oferty.

startAmount

decimal

Początkowa ilość kryptowaluty.

time

UNIX timestamp

Czas wystawienia pozycji.

postOnly

boolean

Czy oferta jest typu post only.

mode

string

Typ oferty: limit / market.

receivedAmount

decimal

Ilość kryptowaluty, która została już przez nas odebrana z oferty.

firstBalanceId

UUID

Identyfikator portfela dla pierwszej waluty z rynku.

secondBalanceId

UUID

Identyfikator portfela dla drugiej waluty z rynku.

Anulowanie oferty

 
deletehttps://api.bitbay.net/rest/trading/offer/kod_rynku/id_oferty/typ_oferty/kurs
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/offer/BTC-PLN/71d78058-8c33-4806-871b-1493c29ba4bc/buy/23000",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "DELETE",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.bitbay.net/rest/trading/offer/BTC-PLN/71d78058-8c33-4806-871b-1493c29ba4bc/buy/23000' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/offer/BTC-PLN/71d78058-8c33-4806-871b-1493c29ba4bc/buy/23000")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/offer/BTC-PLN/71d78058-8c33-4806-871b-1493c29ba4bc/buy/23000"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
	"status": "Ok",
	"errors": []
}
{
	"status": "Fail",
	"errors": [
		"OFFER_NOT_FOUND"
	]
}

Path Params

kod_rynku
string
required

Kod rynku w którym istnieje oferta.

id_oferty
string
required

UUID aktywnej oferty.

typ_oferty
string
required

Typ oferty: buy / sell.

kurs
float
required

Kurs aktywnej oferty.

 

Prowizje i konfiguracja rynku

Metoda zwraca nam aktualnie przypisaną prowizję dla wybranego rynku oraz jego konfigurację, która uwzględnia: minimalną wartość transakcji i domyślnie używane portfele do gry. Portfele używane do gry mogą zostać zmienione, przy użyciu następnej metody. Jeżeli chcesz dowiedzieć się więcej o systemie prowizji, przejdź niżej do szczegółów odpowiedzi.

 
gethttps://api.bitbay.net/rest/trading/config/kod_rynku
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/config/BTC-PLN",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/config/BTC-PLN' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/config/BTC-PLN")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/config/BTC-PLN"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status":"Ok",
  "config":{
    "buy":{
      "commissions":{
        "maker":"0.0028",
        "taker":"0.0041"
      }
    },
    "sell":{
      "commissions":{
        "maker":"0.0028",
        "taker":"0.0041"
      }
    },
    "first":{
      "balanceId":"ad9397c5-3bd9-4372-82ba-22da6a90cb56",
      "minValue":"0.00003"
    },
    "second":{
      "balanceId":"f1ed4490-54f6-450b-a87c-16f13d14a949",
      "minValue":"0.1"
    }
  }
}
{
  "status": "Fail",
  "errors": [
    "MALFORMED_REQUEST"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku z którego chcesz pozyskać informacje.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

config

array

buy / sell

array

Tablice prowizji dla ofert: buy / sell.

commissions

array

Tablice prowizji.

  • maker

decimal

Wartość prowizji maker.

  • taker

decimal

Wartość prowizji taker.

first / second

array

Tablice minimalnych transakcji dla pary walutowej.

  • balanceId

UUID

Identyfikator portfela.

  • minValue

decimal

Minimalna wartość transakcji dla danej waluty.

Zmiana konfiguracji rynku

Metoda pozwala na zmianę aktualnie używanych portfeli do gry na giełdzie. Dla wybranego rynku możemy zmienić portfel przypisany do każdej z walut.

 
posthttps://api.bitbay.net/rest/trading/config/kod_rynku
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/config/BTC-PLN",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"first\":\"65049d0d-390d-4ce8-b430-3784de1a3bda\",\"second\":\"ed1c9dbc-7232-459f-9249-5846c03e5710\"}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'POST',
  url: 'https://api.bitbay.net/rest/trading/config/BTC-PLN',
  headers: { 'content-type': 'application/json' },
  body: '{"first":"65049d0d-390d-4ce8-b430-3784de1a3bda","second":"ed1c9dbc-7232-459f-9249-5846c03e5710"}' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/config/BTC-PLN")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request.body = "{\"first\":\"65049d0d-390d-4ce8-b430-3784de1a3bda\",\"second\":\"ed1c9dbc-7232-459f-9249-5846c03e5710\"}"

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/config/BTC-PLN"

payload = "{\"first\":\"65049d0d-390d-4ce8-b430-3784de1a3bda\",\"second\":\"ed1c9dbc-7232-459f-9249-5846c03e5710\"}"
response = requests.request("POST", url, data=payload)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
	"status": "Ok",
	"errors": []
}
{
  "status": "Fail",
  "errors": [
    "MALFORMED_REQUEST"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku z którego chcesz pozyskać informacje.

Body Params

first
string
required

UUID dla pierwszej waluty z rynku, w typ przypadku: BTC.

second
string
required

UUID dla drugiej waluty z rynku, w typ przypadku: PLN.

 

Komunikaty o błędach

 

Standardowe błędy

Komunikat o błędzie
Opis

MARKET_NOT_RECOGNIZED

MARKET_NOT_RECOGNIZED

TICKER_NOT_FOUND

Ticker dla danego marketu nie został odnaleziony.

NOT_RECOGNIZED_OFFER_TYPE

Nieznany typ oferty.

FUNDS_NOT_SUFFICIENT

Środki na koncie przeznaczonym do tradingu nie są wystarczające do realizacji oferty.

OFFER_FUNDS_NOT_EXCEEDING_MINIMUMS

Wartość oferty jest mniejsza niż dopuszczalne minimum.

OFFER_FUNDS_SCALE_ISSUE

Wartość liczbowa podana w zapytaniu nie jest zgodna z ilością miejsc po przecinku dla danej waluty.

OFFER_COULD_NOT_BE_FILLED

Oferta nie może zostać zrealizowana w całości (dotyczy "Fill or kill").

OFFER_WOULD_HAVE_BEEN_PARTIALLY_FILLED

Oferta może zostać zrealizowana tylko w części (dotyczy "Fill or kill").

FILL_OR_KILL_COMBINED_WITH_POST_ONLY

Użyto typów "Fill or kill" z "Post only" - te parametry nie mogą być przesyłane razem.

INVALID_RESOLUTION

Niepoprawna wartość parametru resolution dla historycznych świec.

OFFER_NOT_FOUND

Oferta nie została odnaleziona (w przypadku anulowania).

SECONDARY_AMOUNTONLY

Dla oferty typu market.

ALLOWED_WITH_MARKET_OFFER

SELF_TRADING

Użytkownik posiada przeciwstawne oferty w danym rynku.

PRICE_PRECISION_INVALID

Nieprawidłowa precyzja dla ceny.

USER_OFFER_COUNT_LIMIT_EXCEEDED

Limit ofert wystawionych do marketu dla danego rynku został wyczerpany.

Błędy nieprawidłowo skonstruowanego zapytania

Komunikat błędu
Opis

INVALID_REQUEST

Zapytanie zostało skonstruowane nieprawidłowo.

MALFORMED_REQUEST

JSON przesłany w zapytaniu jest uszkodzony.

MARKET_CODE_CANNOT_BE_EMPTY

Nie podano kodu marketu.

Błędy przeciążenia tradingu

Komunikat błędu
Opis

CONFIG_LOAD_TIMEOUT

Nie można załadować konfiguracji marketu.

SYSTEM_TIMEOUT

Przekroczony czas odpowiedzi systemu.

CORE_OVERFLOW

System tradingowy został przeciążony.

SYSTEM_OVERLOADED

System giełdy jest przeciążony.

Błędy systemowe

Komunikat błędu
Opis

UNKNOWN_ERROR

Wystąpił nieznany błąd.

CONFIG_NOT_FOUND

Konfiguracja rynku dla użytkownika nie została znaleziona.

NOT_SUPPORTED_RESULT

Odpowiedz z modułu realizującego zapytanie nie jest prawidłowa.

CANNOT_GET_REQUIRED_BALANCE

Nie można uzyskać dostępu do portfela użytkownika.

STATS_COULD_NOT_BE_LOADED

Statystyki marketu nie mogą zostać załadowane.

BALANCE_NOT_FOUND_OR_INCOMPATIBLE

Portfel nie został znaleziony lub jest nieobsługiwany.

BALANCE_NOT_FOUND

Portfel nie został znaleziony.

Trading stop

 

Szerszy opis wybranej funkcjonalności możesz znaleźć tutaj.

Nowa oferta stop

Oferta często kojarzona z tak zwanym stop lossem, który ma podobne zastosowanie i pozwala zabezpieczyć się przed utratą środków, gdy kurs gwałtownie spada. Stop może być również wykorzystany w przypadku wzrostów do zakupu lub sprzedania kryptowaluty. Zdefiniowany przez nas typ oferty, realizowany jest w momencie, gdy wartość stopRate osiągnie wybrany kurs, który z kolei wyznaczany jest na podstawie ostatnio przeprowadzonej transakcji.

 
posthttps://api.bitbay.net/rest/trading/stop/offer/kod_rynku
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/stop/offer/BTC-PLN",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"amount\":0.45,\"rate\":23500,\"stopRate\":23200,\"offerType\":\"sell\",\"mode\":\"stop-limit\"}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'POST',
  url: 'https://api.bitbay.net/rest/trading/stop/offer/BTC-PLN',
  headers: { 'content-type': 'application/json' },
  body: '{"amount":0.45,"rate":23200,"stopRate":23100,"offerType":"sell","mode":"stop-limit"}' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/stop/offer/BTC-PLN")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request.body = "{\"amount\":0.45,\"rate\":23500,\"stopRate\":23200,\"offerType\":\"sell\",\"mode\":\"stop-limit\"}"

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/stop/offer/BTC-PLN"

payload = "{\"amount\":0.45,\"rate\":23500,\"stopRate\":23200,\"offerType\":\"sell\",\"mode\":\"stop-limit\"}"
response = requests.request("POST", url, data=payload)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "stopOfferId": "8a7e0cd1-82ec-11e9-becc-0242ac110004"
}
{
  "status": "Fail",
  "errors": [
    "INVALID_STOP_RATE"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku na którym ma zostać wystawiona oferta.

Body Params

offerType
string
required

Typ oferty: buy /sell.

amount
float
required

Ilość kryptowaluty.

stopRate
float
required

Kurs ostatniej transakcji, który aktywuje wystawienie oferty.

mode
string
required

Tryb utworzenia oferty: stop-limit / stop-market.

rate
float

Kurs oferty. Niewymagany w przypadku oferty w trybie stop-market.

balances
array of objects

Tablica przyjmująca UUID portfeli z których chcemy zrealizować ofertę: first / second. Przykład poniżej.

ignoreInvalidStopRate
boolean

Czy zignorować nieprawidłowy kurs stopu. Pozwala na wystawienie oferty, która może zostać od razu zrealizowana. Domyślnie ta opcja przyjmuje wartość false i w przypadku, gdy wystawiona oferta powinna się natychmiast zrealizować, otrzymamy błąd: INVALID_STOP_RATE.

 
{
  "amount": "0.55",
  "rate": "30100",
  "stopRate": "30200",
  "offerType": "BUY",
  "mode": "stop-limit"
}
{
  "amount": "0.55",
  "stopRate": "30200",
  "offerType": "SELL",
  "mode": "stop-market"
}
{
  "amount": "0.55",
  "stopRate": "30200",
  "offerType": "SELL",
  "mode": "stop-market",
  "ignoreInvalidStopRate": true
}
{
  "amount": "0.55",
  "rate": "30100",
  "stopRate": "30200",
  "offerType": "BUY",
  "mode": "stop-limit",
  "balances": {
    "first": "01dd158d-7011-4bbc-98f3-80f09d7e24b8",
    "second": "69d14efe-0b1b-413f-ada4-4a8a975b7d76"
  }
}

Szczegóły odpowiedzi

Klucz
Typ
Opis

status

String

Status wystawienia oferty: Ok / Fail.

stopOfferId

UUID

Identyfikator oferty typu stop.

W przypadku użycia opcji ignoreInvalidStopRate i natychmiastowego wykonania transakcji, parametry odpowiedzi pozostaną bez zmian i nie otrzymamy tablicy zrealizowanych transakcji, jak w przypadku normalnego wystawienia oferty.

Aktywne oferty stop

Zwraca listę aktywnych ofert typu stop, dla wybranego przez nas rynku lub dla wszystkich w przypadku, gdy pominiemy parametr: kod_rynku.

 
gethttps://api.bitbay.net/rest/trading/stop/offer/kod_rynku
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/stop/offer",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/stop/offer',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/stop/offer")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/stop/offer"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "offers": [
    {
      "id": "79b57265-8399-11e9-becc-0242ac110004",
      "operationId": "2b6823c5-dadc-8672-4053-d5d2ca071fc2",
      "userId": "f3788966-2c59-425b-9066-51f80fe1a6fd",
      "market": "BTC-PLN",
      "amount": "1",
      "rate": "0.5",
      "stopRate": "100000",
      "status": "active",
      "offerType": "Buy",
      "mode": "stop-market",
      "balances": {
        "first": "36b3e538-7aac-4fe9-8834-a0577f7706a2",
        "second": "00a6680d-f453-41dd-beca-7594e5680f5a"
      },
      "createdAt": "1559303080684",
      "flags": []
    }
  ]
}
{
  "status": "Fail",
  "errors": [
    "MALFORMED_REQUEST"
  ]
}
 

Path Params

kod_rynku
string

Opcjonalnie: kod rynku z którego chcesz pozyskać informacje.

Szczegóły odpowiedzi

Klucz
Typ
Opis

offers

array

Tablica aktywnych ofert stop.

id

UUID

Identyfikator oferty stop. Nie będzie on tożsamy z identyfikatorem oferty, która zostanie wystawiona w momencie osiągnięcia kursu stopRate.

operationId

UUID

Identyfikator wykonanej operacji.

userId

UUID

Identyfikator Twojego konta.

market

string

Kod marketu.

amount

decimal

Ilosć kryptowaluty.

rate

decimal

Kurs zrealizowania oferty. Przyjmuje wartość null w przypadku oferty typu stop-market.

stopRate

decimal

Kurs aktywacji oferty.

status

string

Obecny status oferty stop: active.

offerType

string

Typ oferty: buy / sell.

mode

string

Tryb oferty: stop-limit / stop-market.

balances

array

Tablica portfeli na których ma zostać zrealizowana oferta.

  • first

UUID

Identyfikator portfela dla pierwszej waluty z rynku.

  • second

UUID

Identyfikator portfela dla drugiej waluty z rynku.

createdAt

UNIX timestamp

Czas wystawienia oferty stop.

flags

array

Tablica dodatkowych flag, które zostały użyte przy stworzeniu oferty. Obecnie żadna z flag nie jest jeszcze dostępna, jednak będą sukcesywnie rozwijane.

Anulowanie oferty stop

 
deletehttps://api.bitbay.net/rest/trading/stop/offer/kod_rynku/id_oferty
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/stop/offer/BTC-PLN/71d78058-8c33-4806-871b-1493c29ba4bc",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "DELETE",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.bitbay.net/rest/trading/stop/offer/BTC-PLN/71d78058-8c33-4806-871b-1493c29ba4bc' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/stop/offer/BTC-PLN/71d78058-8c33-4806-871b-1493c29ba4bc")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/stop/offer/BTC-PLN/71d78058-8c33-4806-871b-1493c29ba4bc"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
	"status": "Ok",
	"errors": []
}
{
  "status": "Fail",
  "errors": [
    "INVALID_STOP_OFFER_ID"
  ]
}

Path Params

kod_rynku
string
required

Kod rynku dla którego została stworzona oferta stop.

id_oferty
string
required

UUID aktywnej oferty typu stop.

 

Komunikaty o błędach

 
Komunikat o błędzie
Opis

INVALID_STOP_RATE

Wartość stopRate jest nieprawidłowa - oferta może zostać natychmiast zrealizowana. Aby zezwolić na natychmiastową realizację, należy ustawić parametr ignoreInvalidStopRate na true.

INVALID_STOP_OFFER_ID

Nieprawidłowy identyfikator dla oferty stop - oferta z podanym identyfikatorem nie istnieje.

OFFER_COULD_NOT_BE_FILLED

W orderbooku nie ma wystarczającej liczby ofert.

Historia

 

Historia transakcji

Metoda zwraca z podziałem na strony: listę wszystkich przeprowadzonych transakcji.
Może również zostać użyta z parametrami, które zapewnią nam przefiltrowanie wyników.

 
gethttps://api.bitbay.net/rest/trading/history/transactions
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

$params = array(
	"markets" => ["LSK-PLN"],
	"rateFrom"=> "10",
	"rateTo"=> "20",
	"userAction" => "Buy",
	"nextPageCursor" => "start"
);


curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/trading/history/transactions?query=" . urlencode(json_encode($params)),
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/trading/history/transactions',
  headers: { 'content-type': 'application/json' },
  qs: {"markets":["LSK-PLN"], "rateFrom":"1", "rateTo":"20", "userAction":"Buy", "nextPageCursor":"start"}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/trading/history/transactions?query=%7B%22markets%22%3A%5B%22LSK-PLN%22%5D%2C%20%22rateFrom%22%3A%221%22%2C%20%22rateTo%22%3A%2220%22%2C%20%22userAction%22%3A%22Buy%22%2C%20%22nextPageCursor%22%3A%22start%22%7D")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/trading/history/transactions"

querystring = '{"markets":["LSK-PLN"], "rateFrom":"1", "rateTo":"20", "userAction":"Buy", "nextPageCursor":"start"}'

response = requests.request("GET", url, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "totalRows": "31503",
  "items": [
    {
      "id": "d0e4746b-288e-4869-8107-d8277fcf4b9d",
      "market": "BTC-PLN",
      "time": "1529670604532",
      "amount": "0.01281693",
      "rate": "23572.84",
      "initializedBy": "Sell",
      "wasTaker": false,
      "userAction": "Buy",
      "offerId": "0325186f-c750-4aaa-98a2-d54e363f30bb",
      "commissionValue" : "1.14"
    }
  ],
  "query": {
    "markets": [ "BTC-PLN" ],
    "limit": [],
    "offset": [],
    "fromTime": [],
    "toTime": [],
    "initializedBy": [],
    "rateFrom": [],
    "rateTo": [],
    "userAction": [],
    "nextPageCursor": [ "start" ]
  },
  "nextPageCursor": "QW9ON3cvcjk2T0lDUHdWallXVTRPRFV3WWkwelpUQTVMVFEyTXpndFlqVmtOQzA1TldJeU56RmxOR1U0WWpZL0kxc2lSVlJJTFZCTVRpSXNJakUxTWpNNU5ERXhNREkyTlRFaUxDSmpZV1U0T0RVd1lpMHpaVEE1TFRRMk16Z3RZalZrTkMwNU5XSXlOekZsTkdVNFlqWWlYUT09"
}
{
  "status": "Fail",
  "errors": [
    "MALFORMED_REQUEST"
  ]
}
 

JSON Array of Query Params

markets
array of strings

Tablica rynków.

rateFrom
float

Minimalna wartość kursu.

rateTo
float

Maksymalna wartość kursu.

fromTime
timestamp

Czas w formacie Unix Timestamp, od którego mają zostać pobrane rekordy.

toTime
timestamp

Czas w formacie Unix Timestamp, do którego mają zostać pobrane rekordy.

userAction
string

Rola, jaką użytkownik pełnij w wykonanej transakcji: buy / sell.

nextPageCursor
string

Wskaźnik, od którego mają zostać pobrane rekordy. Początkowym wskaźnikiem jest: start.

Wszystkie parametry filtrowania muszą zostać wysłane w query w formacie JSON.
Aby przechodzić przez każdą kolejną stronę, należy użyć parametru nextPageCursor, który jest wskaźnikiem do kolejnej strony. W momencie, gdy zwrócony wskaźnik będzie odpowiadał temu, który został wysłany przez nas, będzie to oznaczać, że osiągnęliśmy ostatnią stronę historii.

Szczegóły odpowiedzi

Klucz
Typ
Opis

totalRows

integer

Ilość wszystkich rekordów

items

array

  • id

UUID

ID transakcji

  • market

string

Kod rynku dla danej transakcji.

  • time

Unix Timestamp

Czas wykonania transakcji.

  • amount

decimal

Ilość kryptowaluty.

  • rate

decimal

Kurs transakcji.

  • initializedBy

string

Ktora strona zainicjowała transakcję: buy / sell.

  • wasTaker

boolean

Czy użytkownik realizuje istniejącą już ofertę innego użytkownika.

  • userAction

string

Rola, jaką użytkownik pełnij w wykonanej transakcji: buy / sell.

  • offerId

UUID

Identyfikator oferty w wyniku, której powstała transakcja.

  • commissionValue

decimal

Wartość pobranej prowizji.

query

array

Tablica zawierająca parametry wysłanego zapytania.

nextPageCursor

string

Wskaźnik do kolejnego elementu strony. Jeżeli wskaźnik w odpowiedzi będzie odpowiadał temu, który został wysłany przez nas, będzie to oznaczać, że osiągnęliśmy ostatnią stronę.

Historia operacji

Metoda zwraca z podziałem na strony: listę wszystkich przeprowadzonych operacji na koncie.
Może również zostać użyta z parametrami, które zapewnią nam przefiltrowanie wyników.

 
gethttps://api.bitbay.net/rest/balances/BITBAY/history
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

$params = array (
  'balancesId' => NULL,
  'balanceCurrencies' => 
  array (
    0 => 'BTC',
  ),
  'balanceTypes' => NULL,
  'users' => NULL,
  'fromTime' => NULL,
  'toTime' => NULL,
  'limit' => '20',
  'offset' => 0,
  'types' => 
  array (
    0 => 'ADD_FOUNDS',
  ),
  'sort' => 
  array (
    0 => 
    array (
      'order' => 'DESC',
      'by' => 'time',
    ),
  ),
  'hasNextPage' => false,
  'nextPageCursor' => 'start',
)

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/balances/BITBAY/history?query=" . urlencode(json_encode($params)),
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/balances/BITBAY/history',
  headers: { 'content-type': 'application/json' },
  qs: {"balancesId":null,"balanceCurrencies":["BTC"],"balanceTypes":null,"users":null,"fromTime":null,"toTime":null,"limit":"20","offset":0,"types":["ADD_FOUNDS"],"sort":[{"order":"DESC","by":"time"}],"hasNextPage":false,"nextPageCursor":"start"}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/balances/BITBAY/history?query=%7B%22balancesId%22%3Anull%2C%22balanceCurrencies%22%3A%5B%22BTC%22%5D%2C%22balanceTypes%22%3Anull%2C%22users%22%3Anull%2C%22fromTime%22%3Anull%2C%22toTime%22%3Anull%2C%22limit%22%3A%2220%22%2C%22offset%22%3A0%2C%22types%22%3A%5B%22ADD_FOUNDS%22%5D%2C%22sort%22%3A%5B%7B%22order%22%3A%22DESC%22%2C%22by%22%3A%22time%22%7D%5D%2C%22hasNextPage%22%3Afalse%2C%22nextPageCursor%22%3A%22start%22%7D")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/balances/BITBAY/history"

querystring = '{"balancesId":null,"balanceCurrencies":["BTC"],"balanceTypes":null,"users":null,"fromTime":null,"toTime":null,"limit":"20","offset":0,"types":["ADD_FOUNDS"],"sort":[{"order":"DESC","by":"time"}],"hasNextPage":false,"nextPageCursor":"start"}'

response = requests.request("GET", url, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status":"Ok",
  "items":[
    {
      "historyId":"21607612-7b64-4e2a-bac3-22185c556183",
      "balance":{
        "id":"69d14efe-0b1b-413f-ada4-4a8a975b7d76",
        "currency":"PLN",
        "type":"FIAT",
        "userId":"b47f9af4-081d-4f5d-8cd7-9f3a1411d2e2",
        "name":"PLN"
      },
      "detailId":null,
      "time":1530265764420,
      "type":"CREATE_BALANCE",
      "value":0,
      "fundsBefore":{
        "total":null,
        "available":null,
        "locked":null
      },
      "fundsAfter":{
        "total":0,
        "available":0,
        "locked":0
      },
      "change":{
        "total":0,
        "available":0,
        "locked":0
      }
    }
  ],
  "hasNextPage":true,
  "fetchedRows":10,
  "limit":10,
  "offset":0,
  "queryTime":1,
  "totalTime":46,
  "settings":{
    "balancesId":null,
    "balanceCurrencies":[

    ],
    "balanceTypes":[

    ],
    "users":[
      "b47f9af4-081d-4f5d-8cd7-9f3a1411d2e2"
    ],
    "engine":"BITBAY",
    "fromTime":0,
    "toTime":2229729760000,
    "absValue":false,
    "fromValue":null,
    "toValue":null,
    "sort":[

    ],
    "limit":10,
    "offset":0,
    "types":null
  },
  "errors":null
}
{
  "status": "Fail",
  "errors": [
    "MALFORMED_REQUEST"
  ]
}
 

JSON Array of Query Params

balancesId
array of strings

Tablica identyfikatorów rachunków dla których ma zostać zwrócona historia.

balanceCurrencies
array of strings

Tablica walut dla których ma zostać zwrócona historia.

fromTime
int32

Czas w formacie UNIX timestamp od którego mają zostać pobrane rekordy.

toTime
int32

Czas w formacie UNIX timestamp do którego mają zostać pobrane rekordy.

fromValue
float

Minimalna ilość kryptowaluty w transakcji dla której mają zostać pobrane rekordy.

toValue
float

Maksymalna ilość kryptowaluty w transakcji dla której mają zostać pobrane rekordy.

balanceTypes
string

Typ portfela: fiat / crypto.

types
array of strings

Tablica typów operacji. Lista operacji dostępna jest poniżej.

sort
array of objects

Tablica parametrów sortowania: by - pole po którym posortować, order - rodzaj sortowania: ASC/DESC.

Wszystkie parametry filtrowania muszą zostać wysłane w query w formacie JSON.

Szczegóły odpowiedzi

Klucz
Typ
Opis

items

array

historyId

UUID

Unikalny identyfikator wpisu.

balance

array

Informacje o saldzie, którego dotyczy wpis.

  • id

UUID

Unikalny identyfikator rachunku.

  • cyrrency

string

Kod waluty.

  • type

string

Typ portfela: crypto / fiat.

  • userId

UUID

Unikalny identyfikator użytkownika.

  • name

string

Nazwa portfela.

detailId

UUID

Unikalny identyfikator detali operacji (jeżeli są dostępne).

time

UNIX timestamp

Czas utworzenia wpisu.

type

string

Typ operacji, lista wszystkich typów dostępna jest poniżej.

value

decimal

Wartość operacji.

fundsBefore / fundsAfter / change

array

Tablice parametrów dla salda, które uwzględniają wartości przed / po operacji oraz samą wartość zmiany.

  • total

decimal

Całkowita ilość środków.

  • avalilable

decimal

Dostępna ilość środków.

  • locked

decimal

Zablokowana ilość środków.

hasNextPage

boolean

Czy istnieje kolejna strona z historią.

fetchedRows

integer

Ilość pobranych wierszy.

limit

integer

Wartość aktualnego limitu wierszy.

settings

array

Tablica parametrów o filtrach zastosowanych w zapytaniu.

  • balancesId

array

Tablica identyfikatorów rachunków, dla których została zwrócona historia.

  • balanceCurrencies

array

Tablica walut, dla których została zwrócona historia

  • balanceTypes

array

Tablica walut, dla których została zwrócona historia

  • engine

string

Nazwa aplikacji, której dotyczy portfel: BITBAY / BITBAYPAY.

  • fromTime

Unix Timestamp

Czas, od którego chcemy pobrać historię.

  • toTime

Unix Timestamp

Czas, do którego chcemy pobrać historię.

  • absValue

boolean

Czy zastosować filtrowanie dla wartości bezwzględnych z wartości fromValue oraz toValue.

  • fromValue

decimal

Minimalna ilość kryptowaluty w transakcji dla której mają zostać pobrane rekordy.

  • toValue

decimal

Maksymalna ilość kryptowaluty w transakcji dla której mają zostać pobrane rekordy.

  • sort

array

Tablica parametrów sortowania: by - pole po którym posortować, order - rodzaj sortowania: ASC/DESC.

  • limit

integer

Wartość aktualnego limitu wierszy.

  • types

array

Tablica typów operacji. Wszystkie możliwości dostępne są poniżej.

Typy operacji

Klucz
Opis

CREATE_BALANCE

Utworzenie rachunku.

ADD_FUNDS

Wpłata na rachunek.

SUBTRACT_FUNDS

Wypłata z rachunku.

TRANSFER_FROM

Przelew wewnętrzny z rachunku.

TRANSFER_TO

Przelew wewnętrzny na rachunek.

TRANSACTION_COMMISSION_OUTCOME

Pobranie prowizji za transakcję.

TRANSACTION_PRE_LOCKING

Blokada środków na rachunku.

LOCK_FUNDS

Blokada środków na rachunku.

ADMIN_LOCK_FUNDS

Blokada środków na rachunku

UNLOCK_FUNDS

Odblokowanie środków na rachunku.

ADMIN_UNLOCK_FUNDS

Odblokowanie środków na rachunku.

TRANSACTION_POST_INCOME

Otrzymanie środków z transakcji na rachunek.

TRANSACTION_POST_OUTCOME

Pobranie środków z transakcji z rachunku

ADMIN_ADD_FUNDS

Korekta środków na rachunku

ADMIN_SUBTRACT_FUNDS

Korekta środków na rachunku

TRANSACTION_OFFER_ABORTED_RETURN

Zwrot za usunięcie oferty na rachunek

AFFILIATE_FUNDS_TRANSFER

Transfer środków z programu partnerskiego

PAY_WITHDRAW_LOCK

Blokada środków na rachunku: {name}

TRANSACTION_OFFER_COMPLETED_RETURN

Anulowanie oferty poniżej wartości minimalnych

TRANSACTION_FAIL_UNLOCKING

Zwrot po nieudanej próbie wystawienia oferty

WITHDRAWAL_LOCK_FUNDS

Blokada środków

WITHDRAWAL_UNLOCK_FUNDS

Odblokowanie środków

WITHDRAWAL_SUBTRACT_FUNDS

Wypłata środków

FUNDS_MIGRATION

Migracja środków

TRANSACTION_COMMISSION_RETURN

Zwrot prowizji

ADD_FUNDS_ERROR_REFUND

Korekta blokady

OLD_ADDRESS_CRYPTO_DEPOSIT

Wpłata na stary adres

FIAT_DEPOSIT_MIGRATED

Wpłata na rachunek: {name}

ADMIN_SUBTRACT_FUNDS

Korekta środków na rachunku: {name}

ADMIN_WITHDRAWAL_REFUND

Zwrot środków za anulowaną wypłatę

SUBTRACT_FUNDS_ERROR_CORRECTION

Korekta środków

ADD_FUNDS_COMPENSATION

Rekompensata

BITCOIN_GOLD_FORK

Fork Bitcoin

BALANCE_DEPOSIT_CORRECTION

Korekta wpłaty

WITHDRAWAL_CUSTOM_COMMISSION

Prowizja za przelew dla sieci Bitcoin

Typy operacji, które nie są już używane i związane są z nieaktualnymi kartami:

Klucz
Opis

CARD_ADMISSION

Zasilenie karty z rachunku

CARD_ORDER

Zamówienie karty

INCOME

Zasilenie karty

OUTCOME

Wypłata z karty

LOCK_CARD_ADMISSION

Zasilenie karty, blokada środków

UNLOCK_CARD_ADMISSION

Anulowanie zasilenia karty

SUBTRACT_CARD_ADMISSION

Zasilenie karty

LOCK_ORDER_COMISSION

Blokada środków za zamówienie karty

SUBTRACT_CARD_ORDER

Opłata za wydanie karty

UNLOCK_CARD_ORDER

Odblokowanie środków za wydanie karty

Portfele

 

Lista portfeli

Zwraca wszystkie portfele dostępne na koncie wraz ze stanem środków.

 
gethttps://api.bitbay.net/rest/balances/BITBAY/balance
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/balances/BITBAY/balance",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/balances/BITBAY/balance',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/balances/BITBAY/balance")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/balances/BITBAY/balance"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
   "status":"Ok",
   "balances":[
      {
         "id": "01931d52-536b-4ca5-a9f4-be28c86d0cc3",
         "userId": "4bc43956-423f-47fd-9faa-acd37c58ed9f",
         "availableFunds": 9830.28785615,
         "totalFunds": 9840.28785615,
         "lockedFunds": 10.00000000,
         "currency":"ETH",
         "type":"CRYPTO",
         "name":"Domyślny rachunek ETH",
         "balanceEngine":"BITBAY"
      }
   ],
   "errors":null
}
{
  "status": "Fail",
  "errors": [
    "MALFORMED_REQUEST"
  ]
}
 

Szczegóły odpowiedzi

Klucz
Typ
Opis

balances

array

id

UUID

Identyfikator portfela.

userId

UUID

Identyfikator użytkownika.

availableFunds

decimal

Ilość dostępnych środków.

totalFunds

decimal

Całkowita ilość środków.

lockedFunds

decimal

Ilość zablokowanych środków.

currency

string

Kod waluty.

type

string

Rodzaj waluty: CRYPTO / FIAT.

name

string

Nazwa portfela.

balanceEngine

string

Nazwa aplikacji, której dotyczy portfel: BITBAY / BITBAYPAY.

Nowy portfel

Metoda pozwala na utworzenie dodatkowego portfela dla wybranej waluty.
Można utworzyć maksymalnie 10 własnych portfeli, co wraz z domyślnym daje łączną liczbę maksymalnie 11 portfeli dla każdej z walut. W przypadku tokenów - dla każdego z nich maksymalna ilość może się różnić.

 
posthttps://api.bitbay.net/rest/balances/BITBAY/balance
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/balances/BITBAY/balance",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"currency\":\"BTC\",\"type\":\"crypto\",\"name\":\"oszczednosci\"}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'POST',
  url: 'https://api.bitbay.net/rest/balances/BITBAY/balance',
  headers: { 'content-type': 'application/json' },
  body: '{"currency":"BTC","type":"crypto","name":"oszczednosci"}' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/balances/BITBAY/balance")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request.body = "{\"currency\":\"BTC\",\"type\":\"crypto\",\"name\":\"oszczednosci\"}"

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/balances/BITBAY/balance"

payload = "{\"currency\":\"BTC\",\"type\":\"crypto\",\"name\":\"oszczednosci\"}"
response = requests.request("POST", url, data=payload)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status":"Ok",
  "items":[
    {
      "historyId":"21607612-7b64-4e2a-bac3-22185c556183",
      "balance":{
        "id":"69d14efe-0b1b-413f-ada4-4a8a975b7d76",
        "currency":"PLN",
        "type":"FIAT",
        "userId":"b47f9af4-081d-4f5d-8cd7-9f3a1411d2e2",
        "name":"PLN"
      },
      "detailId":null,
      "time":1530265764420,
      "type":"CREATE_BALANCE",
      "value":0,
      "fundsBefore":{
        "total":null,
        "available":null,
        "locked":null
      },
      "fundsAfter":{
        "total":0,
        "available":0,
        "locked":0
      },
      "change":{
        "total":0,
        "available":0,
        "locked":0
      }
    }
  ],
  "hasNextPage":true,
  "fetchedRows":10,
  "limit":10,
  "offset":0,
  "queryTime":1,
  "totalTime":46,
  "settings":{
    "balancesId":null,
    "balanceCurrencies":[

    ],
    "balanceTypes":[

    ],
    "users":[
      "b47f9af4-081d-4f5d-8cd7-9f3a1411d2e2"
    ],
    "engine":"BITBAY",
    "fromTime":0,
    "toTime":2229729760000,
    "absValue":false,
    "fromValue":null,
    "toValue":null,
    "sort":[

    ],
    "limit":10,
    "offset":0,
    "types":null
  },
  "errors":null
}
{
  "status": "Fail",
  "errors": [
    "BALANCE_COUNT_LIMIT_EXCEEDED"
  ]
}

Body Params

currency
string

Kod waluty.

type
string

Typ przechowywanej waluty: CRYPTO / FIAT.

name
string

Nazwa dla nowo utworzonego portfela.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

balance

array

id

UUID

Identyfikator portfela.

userId

UUID

Identyfikator użytkownika.

availableFunds

decimal

Ilość dostępnych środków.

totalFunds

decimal

Całkowita ilość środków.

lockedFunds

decimal

Ilość zablokowanych środków.

currency

string

Kod waluty.

type

string

Rodzaj waluty: CRYPTO / FIAT.

name

string

Nazwa dla stworzonego portfela.

balanceEngine

string

Nazwa aplikacji, której dotyczy portfel: BITBAY / BITBAYPAY.

Zmiana nazwy

Udostępnia możliwość zmiany nazwy wcześniej utworzonego przez nas portfela.
Zmiana nazwy domyślnego portfela nie jest możliwa.

 
puthttps://api.bitbay.net/rest/balances/BITBAY/balance/id_portfela
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/balances/BITBAY/balance/9c196289-fdbe-4a60-b89a-43594f8eae3c",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"name\":\"trading\"}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.bitbay.net/rest/balances/BITBAY/balance/9c196289-fdbe-4a60-b89a-43594f8eae3c',
  body: { name: 'trading' },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/balances/BITBAY/balance/9c196289-fdbe-4a60-b89a-43594f8eae3c")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request.body = "{\"name\":\"trading\"}"

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/balances/BITBAY/balance/9c196289-fdbe-4a60-b89a-43594f8eae3c"



payload = "{\"name\":\"trading\"}"
response = requests.request("PUT", url, data=payload)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
   "status":"Ok",
   "message":null
}
{
   "status":"Fail",
   "errors": [
    "MALFORMED_REQUEST"
  ]
}

Path Params

id_portfela
string
required

Identyfikator portfela dla którego zostanie zmieniona nazwa.

Body Params

name
string

Nowa nazwa dla wybranego portfela.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

message

string

Komunikat odpowiedzi. Domyślnie: null.

Przelew wewnętrzny

Zapewnia wygodną możliwość wysłania środków pomiędzy własnymi portfelami.

 
posthttps://api.bitbay.net/rest/balances/BITBAY/balance/transfer/id_zrodlowe/id_docelowe
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/balances/BITBAY/balance/transfer/be7ddc36-e048-4f1f-b2f2-4c63de20caa6/4e76ee66-572f-476e-b769-b89a17319d68",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"currency\":\"BTC\",\"funds\":0.5}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'POST',
  url: 'https://api.bitbay.net/rest/balances/BITBAY/balance/transfer/be7ddc36-e048-4f1f-b2f2-4c63de20caa6/4e76ee66-572f-476e-b769-b89a17319d68',
  headers: { 'content-type': 'application/json' },
  body: '{"currency":"BTC","funds":0.5}' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/balances/BITBAY/balance/transfer/be7ddc36-e048-4f1f-b2f2-4c63de20caa6/4e76ee66-572f-476e-b769-b89a17319d68")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request.body = "{\"currency\":\"BTC\",\"funds\":0.5}"

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/balances/BITBAY/balance/transfer/be7ddc36-e048-4f1f-b2f2-4c63de20caa6/4e76ee66-572f-476e-b769-b89a17319d68"

payload = "{\"currency\":\"BTC\",\"funds\":0.5}"
response = requests.request("POST", url, data=payload)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
   "status":"Ok",
   "from":{
      "id":"ad9397c5-3bd9-4372-82ba-22da6a90cb56",
      "userId":"4bc43956-423f-47fd-9faa-acd37c58ed9f",
      "availableFunds":0.01803472,
      "totalFunds":0.01804161,
      "lockedFunds":0.00000689,
      "currency":"BTC",
      "type":"CRYPTO",
      "name":"BTC",
      "balanceEngine":"BITBAY"
   },
   "to":{
      "id":"01931d52-536b-4ca5-a9f4-be28c86d0cc3",
      "userId":"4bc43956-423f-47fd-9faa-acd37c58ed9f",
      "availableFunds":0.00010000,
      "totalFunds":0.00010000,
      "lockedFunds":0E-8,
      "currency":"BTC",
      "type":"CRYPTO",
      "name":"Prowizja",
      "balanceEngine":"BITBAY"
   },
   "errors":null
}
{
  "status": "Fail",
  "errors": [
    "MALFORMED_REQUEST"
  ]
}

Path Params

id_zrodlowe
string
required

Identyfikator portfela źródłowego z którego zostaną pobrane środki.

id_docelowe
string
required

Identyfikator portfela docelowego, który otrzyma środki.

Body Params

currency
string

Kod waluty.

funds
string

Ilość środków, która ma zostać przelana.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

from / to

array

Tablica informacji dla salda źródłowego i docelowego.

id

UUID

Identyfikator portfela.

userId

UUID

Identyfikator użytkownika.

availableFunds

decimal

Ilość dostępnych środków.

totalFunds

decimal

Całkowita ilość środków.

lockedFunds

decimal

Ilość zablokowanych środków.

currency

string

Kod waluty.

type

string

Rodzaj waluty: CRYPTO / FIAT.

name

string

Nazwa portfela.

balanceEngine

string

Nazwa aplikacji, której dotyczy portfel: BITBAY / BITBAYPAY.

Kantor FIAT

 

Aktualny kurs

Metoda pobiera bieżący kurs dla wybranej pary walutowej.

 
gethttps://api.bitbay.net/rest/fiat_cantor/rate/waluta1/waluta2
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/fiat_cantor/rate/PLN/EUR",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/fiat_cantor/rate/PLN/EUR',
  headers: { 'content-type': 'application/json' },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/fiat_cantor/rate/PLN/EUR")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/fiat_cantor/rate/PLN/EUR"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "message": null,
  "currency1": "PLN",
  "currency2": "EUR",
  "rate": 4.2936
}
{
  "status": "Fail",
  "errors": [
    "PERMISSIONS_NOT_SUFFICIENT"
  ]
}

Path Params

waluta1
string
required

Kod waluty, którą chcemy wymienić.

waluta2
string
required

Kod waluty, na jaką ma zostać dokonana wymiana.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

currency1

string

Waluta do zamiany.

currency2

string

Waluta, która zostanie otrzymana po zamianie.

rate

decimal

Aktualny kurs.

Zamiana

 
posthttps://api.bitbay.net/rest/fiat_cantor/exchange
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/fiat_cantor/exchange",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"currency1BalanceId\":\"c3b1d15b-3c94-4ed1-9010-0f538bbf17f7\",\"currency2BalanceId\":\"1a9ceaec-ddda-45e0-a1e8-ca8a82a625f8\",\"currency1\":\"EUR\",\"currency2\":\"PLN\",\"amount\":10,\"rate\":4.2935}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'POST',
  url: 'https://api.bitbay.net/rest/fiat_cantor/exchange',
  headers: { 'content-type': 'application/json' },
  body: '{"currency1BalanceId":"c3b1d15b-3c94-4ed1-9010-0f538bbf17f7","currency2BalanceId":"1a9ceaec-ddda-45e0-a1e8-ca8a82a625f8","currency1":"EUR","currency2":"PLN","amount":10,"rate":4.2935}' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/fiat_cantor/exchange")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request.body = "{\"currency1BalanceId\":\"c3b1d15b-3c94-4ed1-9010-0f538bbf17f7\",\"currency2BalanceId\":\"1a9ceaec-ddda-45e0-a1e8-ca8a82a625f8\",\"currency1\":\"EUR\",\"currency2\":\"PLN\",\"amount\":10,\"rate\":4.2935}"

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/fiat_cantor/exchange"

payload = "{\"currency1BalanceId\":\"c3b1d15b-3c94-4ed1-9010-0f538bbf17f7\",\"currency2BalanceId\":\"1a9ceaec-ddda-45e0-a1e8-ca8a82a625f8\",\"currency1\":\"EUR\",\"currency2\":\"PLN\",\"amount\":10,\"rate\":4.2935}"
response = requests.request("POST", url, data=payload)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "message": null,
  "amount": 42.93
}
{
  "status": "Fail",
  "errors": [
    "RATE_CHANGED"
  ]
}

Body Params

currency1BalanceId
string
required

ID portfela dla pierwszej waluty, która zostanie wymieniona.

currency2BalanceId
string
required

ID portfela drugiej waluty na którą zostanie dokonana zamiana.

currency1
string
required

Kod waluty, która zostanie wymieniona.

currency2
string
required

Kod waluty na którą zostanie wykonana zamiana.

amount
float
required

Ilość środków do wymiany.

rate
float
required

Aktualny kurs wymiany, pobrany z metody wyżej.

 

Szczegóły odpowiedzi

Klucz
Typ
Opis

amount

decimal

Ilość otrzymanych środków.

W przypadku, gdy w trakcie wymiany kurs ulegnie zmianie:

  • na korzyść: wymiana dokona się po lepszym kursie
  • na niekorzyść: otrzymany w odpowiedzi błąd:
    {"status":"Fail","errors":["RATE_CHANGED"]}

Historia

Zwraca kompletną historię dokonanych wymian w kantorze.

 
gethttps://api.bitbay.net/rest/fiat_cantor/history
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

<?php

$curl = curl_init();

$params = array (
  'page' => 1,
  'limit' => 10,
  'markets' => 
  array (
    0 => 'PLNEUR',
    1 => 'PLNUSD',
    2 => 'EURPLN',
    3 => 'EURUSD',
    4 => 'USDPLN',
    5 => 'USDEUR',
  ),
);


curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bitbay.net/rest/fiat_cantor/history?params=" . urlencode(json_encode($params)),
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
// Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
// Zobacz jak poprawnie przeprowadzić autoryzację:
// https://docs.bitbay.net/reference#autoryzacja

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.bitbay.net/rest/fiat_cantor/history?params=',
  headers: { 'content-type': 'application/json' },
  qs: {"page":1,"limit":2,"markets":["PLNEUR","PLNUSD","EURPLN","EURUSD","USDPLN","USDEUR"]}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

require 'uri'
require 'net/http'

url = URI("https://api.bitbay.net/rest/fiat_cantor/history?params=")
params = { :page => "1", :limit => "2", :markets => "PLNEUR" }
url.query = URI.encode_www_form( params )

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
# Wybrana metoda jest metodą prywatną i wymaga dodatkowych nagłówków do autoryzacji
# Zobacz jak poprawnie przeprowadzić autoryzację:
# https://docs.bitbay.net/reference#autoryzacja

import requests

url = "https://api.bitbay.net/rest/fiat_cantor/history"

querystring = '{"page":1,"limit":2,"markets":["PLNEUR","PLNUSD","EURPLN","EURUSD","USDPLN","USDEUR"]}'

response = requests.request("GET", url, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "Ok",
  "message": null,
  "hasNextPage": true,
  "items": [
    {
      "time": 1538139352000,
      "currency1": "EUR",
      "currency2": "PLN",
      "amountGiven": 250000,
      "amountReceived": 1062900,
      "rate": 4.2516,
      "userId": "b2f415cc-c71a-406b-bcf0-bbbba4b196b9",
      "status": "finished"
    },
    {
      "time": 1534257506000,
      "currency1": "EUR",
      "currency2": "PLN",
      "amountGiven": 16897.56,
      "amountReceived": 71995.43,
      "rate": 4.2607,
      "userId": "b2f415cc-c71a-406b-bcf0-bbbba4b196b9",
      "status": "finished"
    }
  ]
}
 

JSON Array of Query Params

page
int32

Strona która ma zostać pobrana.

limit
int32

Ilość rekordów na stronę.

markets
array of strings

Tablica par walutowych dla jakich ma zostać pobrana historia.

fromTime
int32

Czas w formacie UNIX timestamp od którego mają zostać pobrane rekordy.

toTime
timestamp

Czas do którego mają zostać pobrane rekordy.

Szczegóły odpowiedzi

Klucz
Typ
Opis

hasNextPage

boolean

Czy istnieje kolejna strona wyników.

items

array

Tablica rekordów w historii.

  • time

Unix Timestamp

Czas dokonania wymiany.

  • currency1

string

Waluta która została wymieniona.

  • currency2

string

Otrzymana waluta przy zamianie.

  • amountGiven

decimal

Wymieniona ilość środków pierwszej waluty.

  • amountReceived

decimal

Otrzymana ilość środków w drugiej walucie.

  • rate

decimal

Kurs wymiany.

  • userId

UUID

ID naszego użytkownika.

  • status

string

Status wymiany.

Komunikaty o błędach

 

Wymiana

Komunikat
Opis

BALANCE_EXCEPTION

Błąd portfela.

FUNDS_NOT_SUFFICIENT

Środki na portfelu nie są wystarczające do wykonania zamiany.

EXTERNAL_API_EXCEPTION

Błąd po stronie zewnętrznego operatora.

RATE_CHANGED

Kurs uległ zmianie na niekorzyść. Równocześnie wymiana nie doszła do skutku.

INVALID_BALANCE_ID

Niepoprawny UUID jednego z portfelów na których chcemy przeprowadzić wymianę.

AMOUNT_TOO_LOW

Zbyt niska ilość waluty do wykonania zamiany.

INVALID_AMOUNT_PRECISION

Pole amount posiada zbyt dużą precyzję. Maksymalna precyzja wynosi 2 miejsca po przecinku.

Historia

Komunikat
Opis

LIMIT_TOO_BIG_EXCEPTION

Przekroczono limit rekordów do pobrania. Maksymalna ilość: 100.

NO_MARKETS_GIVEN

Tablica markets do filtrowania wyników jest pusta.

Subskrypcja

 

ConnectionClosed

Połączenia są obsługiwane przez zewnętrzne proxy: CloudFlare. Operator by zapewnić jak najwyższą jakość świadczonych usług, zmienia kilka razy dziennie politykę obsługi ruchu pomiędzy serwerami, co może skutkować nagłym zerwaniem połączenia na kanale WebSocket. Zalecamy zatem już na samym początku pisania własnej aplikacji aby uwzględnić i obsłużyć takie sytuacje.

Adres bazowy, pod którym dostępny jest interfejs:

wss://api.bitbay.net/websocket/

Aby nawiązać połączenie z publiczną subskrypcją, należy wysłać w formacie JSON: akcję subscribe-public wraz z modułem i ścieżką z której będziemy korzystać. Ten rodzaj połączenia nie wymaga żadnych dodatkowych parametrów autoryzacyjnych. Aby przerwać subskrypcję, wystarczy wysłać akcję unsubscribe na ten sam moduł i ścieżkę. Zamknięcie websocketu automatycznie przerwie subskrypcję na wszystkich kanałach.

{
 "action": "subscribe-public",
 "module": "trading",
 "path": "orderbook/btc-pln"
}
{
 "action": "unsubscribe",
 "module": "trading",
 "path": "orderbook/btc-pln"
}

Struktura odpowiedzi

Każda otrzymana wiadomość przez kanał WebSocket to tak zwany push, który w przypadku aktualizacji orderbooka będzie wyglądał w ten sposób:

{
  "action":"subscribe-public-confirm",
  "topic": "trading/orderbook/btc-pln",
  "message": {
    "changes": [
      {
        "marketCode": "BTC-PLN",
        "entryType": "Sell",
        "rate": "39870.99",
        "action": "remove"
      }
    ],
    "timestamp": "1566389182288"
  },
  "timestamp": "1566389182288",
  "seqNo": 11558970
}

Parametry action, topic, message, timestamp oraz seqNo będą zwracane dla każdego z kanałów i ich opis zostanie już pominięty w kolejnych rozdziałach.

Klucz
Typ
Opis

action

String

Typ akcji: push / subscribe-public-error / subscribe-private-error / subscribe-private-confirm / subscribe-public-confirm / proxy-response / pong / json-error.

topic

String

Pełna ścieżka kanału, który jest obecnie podłączony.

message

Object

Wiadomość o aktualizacjach, która jest różna dla każdego z kanałów.

timestamp

Unix Timestamp

Czas wysłania pusha przez serwer.

seqNo

integer

Numer sekwencyjny. Pomaga zachować kolejność odbieranych wiadomości. Warto sprawdzać, czy każda kolejna, otrzymana wiadomość posiada seqNo większy o 1 od poprzedniej.

Snapshot

Każda z przedstawionych poniżej subskrypcji publicznych, udostępnia dodatkową możliwość pobrania snapshota. Odbywa się to poprzez akcję proxy, która jest wykonywana na metodzie RESTowej typu GET z dodatkowym parametrem requestId, który stanowi unikalny identyfikator naszego zapytania.

{
	"requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
	"action": "proxy",
	"module": "trading",
	"path": "ticker/btc-pln",
}
{
  "requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
  "statusCode": 200,
  "body": {
    "status": "Ok",
    "ticker": {
      "market": {
        "code": "BTC-PLN",
        "first": {
          "currency": "BTC",
          "minOffer": "0.00003",
          "scale": 8
        },
        "second": {
          "currency": "PLN",
          "minOffer": "0.1",
          "scale": 2
        }
      },
      "time": "1530796785036",
      "highestBid": "24720.98",
      "lowestAsk": "24739.97",
      "rate": "24739.99",
      "previousRate": "24730.13"
    }
  }
}

Ping

Subskrypcja pozwala na przetestowanie aktywności połączenia, co możemy wdrożyć jako tzw heartbeat'a dla naszej aplikacji. Po wysłaniu wiadomości "ping", jeżeli tylko nasze połączenie z serwerem wciąż jest aktywne - otrzymamy "pong" w odpowiedzi.

 
{
  "action": "ping"
}
{
  "action": "pong"
}

Trading

 

Ticker

Subskrypcja informuje o ogólnej konfiguracji i statystykach rynku. Pokazuje wartość najmniejszej transakcji, jaką możemy przeprowadzić oraz liczbę miejsce po przecinku dla konkretnej waluty z wybranego rynku. Zwraca również bieżącą najlepszą ofertę kupna i sprzedaży, a także ostatnią i przedostatnią cenę transakcji.

 

W przypadku nieuwzględnienia kodu rynku, w tym przypadku: BTC-PLN, subskrypcja będzie nas informować o statystykach dla wszystkich rynków.

{
 "action": "subscribe-public",
 "module": "trading",
 "path": "ticker/{kod_rynku}"
}
{
	"market": {
		"code": "BTC-PLN",
		"first": {
			"currency": "BTC",
			"minOffer": "0.00003",
			"scale": 8
		},
		"second": {
			"currency": "PLN",
			"minOffer": "0.1",
			"scale": 2
		}
	},
	"time": "1519758072515",
	"highestBid": "14818.08",
	"lowestAsk": "15365.89",
	"rate": "15218.08",
	"previousRate": "15240.14"
}
{
	"requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
	"action": "proxy",
	"module": "trading",
	"path": "ticker/{kod_rynku}",
}

Szczegóły odpowiedzi:

Klucz
Typ
Opis

ticker

array

code

string

Kod rynku dla którego zostało wykonane zapytanie.

first / second

array

Tablica informacji pierwszej / drugiej waluty z pary.

  • currency

string

Kod waluty.

  • minOffer

decimal

Minimalna wartość waluty jaką można wystawić.

  • scale

integer

Ilość miejsc po przecinku obsługiwana przez daną walutę.

time

Unix Timestamp

Czas wywołania.

highestBid

decimal

Aktualnie najlepszy kurs dla ofert kupna

lowestAsk

decimal

Aktualnie najlepszy kurs dla ofert sprzedaży

rate

decimal

Kurs ostatniej transakcji.

previousRate

decimal

Kurs przedostatniej transakcji.

Statystyki rynków

Informuje o statystykach z ostatnich 24h: najwyższej i najniższej oferty oraz wartość wolumenu. Możemy je pobrać dla wybranego przez nas rynku lub dla wszystkich w przypadku pustego parametru dla kodu rynku.

 

W przypadku nieuwzględnienia kodu rynku, w tym przypadku: GAME-EUR, subskrypcja będzie nas informować o statystykach dla wszystkich rynków.

{
 "action": "subscribe-public",
 "module": "trading",
 "path": "stats/{kod_rynku}"
}
{
	"m": "GAME-EUR",
	"h": 1.99,
	"l": 1.7,
	"v": 15056.97671429
}
{
	"requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
	"action": "proxy",
	"module": "trading",
	"path": "stats/{kod_rynku}",
}

Szczegóły odpowiedzi

Klucz
Typ
Opis

stats

array

m

string

Kod rynku.

h

decimal

Najwyższy kurs z ostatnich 24 godzin.

l

decimal

Najniższy kurs z ostatnich 24 godzin.

v

decimal

Wolumen z ostatnich 24 godzin.

Orderbook

Subskrypcja informuje nas o aktualizacji ofert w orderbooku.

 
{
 "action": "subscribe-public",
 "module": "trading",
 "path": "orderbook/{kod_rynku}"
}
{
	"changes": [
		{
			"marketCode": "BTC-PLN",
			"entryType": "Buy",
			"rate": "15218.08",
			"action": "remove"
		},
		{
			"marketCode": "BTC-PLN",
			"entryType": "Sell",
			"rate": "15218.08",
			"action": "update",
			"state": {
				"ra": "15218.08",
				"ca": "1",
				"sa": "1",
				"pa": "1",
				"co": 1
			}
		}
	],
	"timestamp": "1519758072517"
}
{
	"requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
	"action": "proxy",
	"module": "trading",
	"path": "orderbook/{kod_rynku}",
}

Szczegóły odpowiedzi

Klucz
Typ
Opis

changes

array

mmarketCode

string

Kod rynku.

entryType

string

Typ transakcji: buy / sell.

rate

decimal

Kurs transakcji.

action

string

Typ zmiany: remove / update. W przypadku wartości update, zostanie zwrócona dodatkowa tablica state.

state

array

Opcjonalna tablica informacji o pozycji, jeżeli jest aktywna.

  • ra

decimal

Kurs pozycji.

  • ca

decimal

Obecna ilość kryptowaluty w pozycji.

  • sa

decimal

Początkowa ilość kryptowaluty w pozycji.

  • pa

decimal

Parametr jest obecnie nieaktywny, jednak w przyszłości będzie zwracał ilość kryptowaluty w pozycji przed ostatnią zmianą.

  • co

decimal

Ilość ofert na którą składa się pozycja.

timestamp

Unix Timestamp

Czas dla którego powyższe wartości są aktualne.

Orderbook limitowany

Subskrypcja informująca o aktualizacji ofert w orderbooku. Wersja zredukowana sprowadza się do wysyłania aktualizacji o pierwszych 10 / 50 / 100 ofertach, które zostaną zadeklarowanie w parametrze limit. W przypadku, gdy któraś pozycja z wyznaczonej wcześniej ilości zostanie usunięta lub zrealizowana, otrzymamy pusha o istniejącej już ofercie, która uzupełni ostatnie miejsce na pozycji, tak by zawsze utrzymywać ich stałą, wybraną wcześniej ilość.

 
{
  "action": "subscribe-public",
  "module": "trading",
  "path": "orderbook-limited/{kod_rynku}/{limit}"
}
{
  "topic": "trading/orderbook-limited/game-pln/10",
  "message": {
    "changes": [
      {
        "marketCode": "GAME-PLN",
        "entryType": "Buy",
        "rate": "10",
        "action": "update",
        "state": {
          "ra": "10",
          "ca": "6",
          "sa": "6",
          "pa": "6",
          "co": 2
        }
      }
    ],
    "timestamp": "1563280204658"
  },
  "timestamp": "1563280204658",
  "seqNo": 5
}
{
  "requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
  "action": "proxy",
  "module": "trading",
  "path": "orderbook-limited/{kod_rynku}/{limit}"
}
{
  "requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
  "statusCode": 200,
  "body": {
    "status": "Ok",
    "sell": [
      {
        "ra": "39500",
        "ca": "0.55345108",
        "sa": "0.55345108",
        "pa": "0.55345108",
        "co": 1
      }
    ],
    "buy": [
      {
        "ra": "39256.01",
        "ca": "0.3468",
        "sa": "0.3468",
        "pa": "0.3468",
        "co": 1
      }
    ],
    "timestamp": "1566468343707",
    "seqNo": "1978936"
  }
}

Sposób implementacji

Aby zachować spójność danych i mieć całkowitą pewność, że orderbook w tworzonej aplikacji nie przegapił żadnych aktualizacji, należy:

  • Połączyć się z kanałem i na osobnej liście zapisywać otrzymane pushe.
  • Pobrać aktualnego snapshota, a następnie zapisać go w docelowej implementacji orderbooka.
  • Zaktualizować orderbooka z listą otrzymanych pushy, zaczynając od wartości o 1 większej od seqNo, wcześniej pobranego snapshota.
  • W przypadku pierwszej, jak i kolejnych aktualizacji, należy również sprawdzać, czy seqNo na pewno posiada wartość o 1 większą od poprzedniej wiadomości oraz czyścić listę po wprowadzeniu zmian w orderbooku.
  • Jeżeli tymczasowa lista nie będzie się zerować, będzie to wina zagubionego pusha i należy na nowo powtórzyć cały proces.

Wartości seqNo będą własne dla każdego z limitów: 10 / 50 / 100 oraz są spójne dla kanału aktualizacji, jak i snapshota.

Szczegóły odpowiedzi

Klucz
Typ
Opis

changes

array

Tablica ze zmianami, które zaszły na rynku.

marketCode

string

Kod rynku.

entryType

string

Typ transakcji: buy / sell.

rate

decimal

Kurs transakcji.

action

string

Typ zmiany: remove / update. W przypadku wartości update, zostanie zwrócona dodatkowa tablica state.

state

array

Opcjonalna tablica informacji o pozycji, jeżeli jest aktywna.

  • ra

decimal

Kurs pozycji.

  • ca

decimal

Obecna ilość kryptowaluty w pozycji.

  • sa

decimal

Początkowa ilość kryptowaluty w pozycji.

  • pa

decimal

Parametr jest obecnie nieaktywny, jednak w przyszłości będzie zwracał ilość kryptowaluty w pozycji przed ostatnią zmianą.

  • co

decimal

Ilość ofert na którą składa się pozycja.

timestamp

Unix Timestamp

Czas dla którego powyższe wartości są aktualne.

Ostatnie transakcje

Subskrypcja zwraca bieżące transakcje na wybranym rynku.

 
{
 "action": "subscribe-public",
 "module": "trading",
 "path": "transactions/{kod_rynku}"
}
{
	"transactions": [
		{
			"id": "c99475e2-f08b-402e-a767-40723b38acc8",
			"t": "1519758072352",
			"a": "0.18413273",
			"r": "15218.08",
			"ty": "Sell"
		}
	]
}
{
	"requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
	"action": "proxy",
	"module": "trading",
	"path": "transactions/{kod_rynku}",
}

Szczegóły odpowiedzi

Klucz
Typ
Opis

items

array

id

UUID

ID transakcji.

t

Unix Timestamp

Czas transakcji.

a

decimal

Ilość kryptowaluty w transakcji.

r

decimal

Kurs transakcji.

ty

string

Typ transakcji: buy / sell.

Subskrypcja

 

ConnectionClosed

Połączenia są obsługiwane przez zewnętrzne proxy: CloudFlare. Operator by zapewnić jak najwyższą jakość świadczonych usług, zmienia kilka razy dziennie politykę obsługi ruchu pomiędzy serwerami, co może skutkować nagłym zerwaniem połączenia na kanale WebSocket. Zalecamy zatem już na samym początku pisania własnej aplikacji aby uwzględnić i obsłużyć takie sytuacje.

Adres bazowy, pod którym dostępny jest interfejs:

wss://api.bitbay.net/websocket/

Aby rozpocząć subskrypcję prywatną, należy wysłać akcję subscribe-private wraz z modułem i ścieżką z której będziemy korzystać oraz wymagane parametry autoryzacyjne. Wszystkie dane wejściowe, jak i wyjściowe występują w formacie JSON. Zamknięcie połączenie następuje poprzez wysłanie akcji unsubscribe wraz z wysłanymi wcześniej parametrami. Wysłanie akcji automatycznie rozłączy wszystkie obecnie otwarte websockety.

Parametry z których należy skorzystać, aby prawidłowo przeprowadzić autoryzację:

Klucz
Opis

hashSignature

HMAC("SHA512", klucz_publiczny + aktualny_timestamp, klucz prywatny)

publicKey

Klucz publiczny w jawnej formie.

requestTimestamp

Aktualny czas w formacie UNIX Timestamp.

{
 "action": "subscribe-private",
 "module": "trading",
 "path": "offers",
 "hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
 "publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
 "requestTimestamp": 1529897422
}
{
 "action": "unsubscribe",
 "module": "trading",
 "path": "offer",
}
{
	"error": "Authentication failed"
}

Snapshot

Niektóre z przedstawionych metod, udostępniają dodatkową możliwość pobrania snapshota. W tym przypadku będziemy musieli skorzystać z akcji proxy z odniesieniem do konkretnego modułu, parametrami autoryzacyjnymi oraz dodatkowymi:

  • requestId - unikalny identyfikator naszego zapytania
  • queryString - opcjonalny - ciąg parametrów przekazywany do adresu zapytania
{
	"requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
	"action": "proxy",
	"module": "trading",
	"path": "/history/transactions",
	"queryString": "markets=BTC-PLN&rateFrom=23000",
	"hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
	"publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
	"requestTimestamp": 1529897422
}
{
	"requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
	"statusCode": 200,
	"body": "{\r\n  \"status\": \"Ok\",\r\n  \"totalRows\": \"31503\",\r\n  \"items\": [\r\n    {\r\n      \"id\": \"d0e4746b-288e-4869-8107-d8277fcf4b9d\",\r\n      \"market\": \"BTC-PLN\",\r\n      \"time\": \"1529670604532\",\r\n      \"amount\": \"0.01281693\",\r\n      \"rate\": \"23572.84\",\r\n      \"initializedBy\": \"Sell\",\r\n      \"wasTaker\": false,\r\n      \"userAction\": \"Buy\"\r\n    }\r\n  ],\r\n  \"query\": {\r\n    \"markets\": [ \"BTC-PLN\" ],\r\n    \"limit\": [],\r\n    \"offset\": [],\r\n    \"fromTime\": [],\r\n    \"toTime\": [],\r\n    \"initializedBy\": [],\r\n    \"rateFrom\": 2300,\r\n    \"rateTo\": [],\r\n    \"userAction\": [],\r\n    \"nextPageCursor\": [ \"start\" ]\r\n  },\r\n  \"nextPageCursor\": \"QW9ON3cvcjk2T0lDUHdWallXVTRPRFV3WWkwelpUQTVMVFEyTXpndFlqVmtOQzA1TldJeU56RmxOR1U0WWpZL0kxc2lSVlJJTFZCTVRpSXNJakUxTWpNNU5ERXhNREkyTlRFaUxDSmpZV1U0T0RVd1lpMHpaVEE1TFRRMk16Z3RZalZrTkMwNU5XSXlOekZsTkdVNFlqWWlYUT09\"\r\n}"
}

Trading

 

Aktywne oferty

Subskrypcja informuje o aktualizacji stanu aktywnych ofert na wybranym lub wszystkich rynkach.

 

W przypadku nieuwzględnienia kodu rynku, subskrypcja będzie nas informować o zmianach w ofercie na wszystkich rynkach.

{
 "action": "subscribe-private",
 "module": "trading",
 "path": "offers/{kod_rynku}",
 "hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
  "publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
  "requestTimestamp": 1529897422
}
{
	"entryType": "Sell",
	"rate": "15929.85",
	"action": "update",
	"offerId": "94a4f38d-8bfd-4cfe-9ade-607e84cff262",
	"market": "BTC-PLN",
	"state": {
		"market": "BTC-PLN",
		"offerType": "Sell",
		"id": "94a4f38d-8bfd-4cfe-9ade-607e84cff262",
		"currentAmount": "0.61118341",
		"lockedAmount": "0.61118341",
		"rate": "15929.85",
		"startAmount": "1",
		"time": "1521405521083",
		"postOnly": false,
		"mode": "limit",
		"receivedAmount": "6193.78"
	}
}
{
  "requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
  "action": "proxy",
  "module": "trading",
  "path": "history/transactions",
  "hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
  "publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
  "requestTimestamp": 1529897422
}

Szczegóły odpowiedzi

Klucz
Typ
Opis

entryType

array

Typ oferty: buy / sell.

rate

decimal

Kurs oferty.

action

string

Przeprowadzona akcja: update - zaktualizowanie stanu oferty, remove - oferta została usunięta.

offerId

UUID

Unikalny identyfikator oferty.

market

string

Rynek w którym znajduje się oferta.

state

array

Tablica szczegółowych informacji o ofercie.

  • market

string

Rynek w którym znajduje się oferta.

  • offerType

string

Typ oferty: buy / sell.

  • id

UUID

Unikalny identyfikator oferty.

  • currentAmount

decimal

Aktualna ilość kryptowaluty w pozycji.

  • lockedAmount

decimal

Ilość kryptowaluty zablokowana na koncie.

  • rate

decimal

Kurs oferty.

  • startAmount

decimal

Początkowa ilość kryptowaluty.

  • time

UNIX timestamp

Czas wystawienia pozycji.

  • postOnly

boolean

Czy oferta jest typu post only.

  • mode

string

Typ oferty: limit / market.

  • receivedAmount

decimal

Ilość kryptowaluty, która została już uzyskana z oferty.

Aktywne oferty stop

Subskrypcja informująca o aktualizacji stanu aktywnych ofert stop na wybranym przez nas rynku lub wszystkich dostępnych.

 

W przypadku nieuwzględnienia kodu rynku, subskrypcja będzie nas informować o zmianach w ofercie na wszystkich rynkach.

{
 "action": "subscribe-private",
 "module": "trading",
 "path": "stop/offers/{kod_rynku}",
 "hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
  "publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
  "requestTimestamp": 1529897422
}
{
  "topic": "trading/stop/offers",
  "message": {
    "action": "rejected",
    "rejectionReason": "InsufficientFunds",
    "exchangeOfferId": "8887265-8399-11e9-becc-0242ac110aaa",
    "state": {
      "id": "79b57265-8399-11e9-becc-0242ac110004",
      "operationId": "2b6823c5-dadc-8672-4053-d5d2ca071fc2",
      "userId": "f3788966-2c59-425b-9066-51f80fe1a6fd",
      "market": "BTC-PLN",
      "amount": "1",
      "rate": null,
      "stopRate": "100000",
      "status": "rejected",
      "offerType": "Buy",
      "mode": "stop-market",
      "balances": {
        "first": "36b3e538-7aac-4fe9-8834-a0577f7706a2",
        "second": "00a6680d-f453-41dd-beca-7594e5680f5a"
      },
      "createdAt": "1559303080684",
      "flags": []
    }
  },
  "timestamp": "1559303080684",
  "seqNo": 54
}
{
  "topic": "trading/stop/offers",
  "message": {
    "action": "accepted",
    "exchangeOfferId": "64ed4697-8791-11e9-9368-0242ac110003",
    "state": {
      "id": "64e7a16c-8791-11e9-b0d9-0242ac110005",
      "operationId": "61751999-2c70-42db-a4b5-ea1a45c0cb2e",
      "userId": "b47f9af4-081d-4f5d-8cd7-9f3a1411d2e2",
      "market": "BTC-PLN",
      "amount": "0.5",
      "rate": "200",
      "stopRate": "300",
      "status": "accepted",
      "offerType": "Buy",
      "mode": "stop-limit",
      "balances": {
        "first": "01dd158d-7011-4bbc-98f3-80f09d7e24b8",
        "second": "69d14efe-0b1b-413f-ada4-4a8a975b7d76"
      },
      "createdAt": "1559739414442",
      "flags": []
    }
  },
  "timestamp": "1559739414553",
  "seqNo": 55
}
{
  "topic": "trading/stop/offers",
  "message": {
    "action": "rejected",
    "rejectionReason": "InsufficientFunds",
    "state": {
      "id": "79b57265-8399-11e9-becc-0242ac110004",
      "operationId": "2b6823c5-dadc-8672-4053-d5d2ca071fc2",
      "userId": "f3788966-2c59-425b-9066-51f80fe1a6fd",
      "market": "BTC-PLN",
      "amount": "1",
      "rate": null,
      "stopRate": "100000",
      "status": "rejected",
      "offerType": "Buy",
      "mode": "stop-market",
      "balances": {
        "first": "36b3e538-7aac-4fe9-8834-a0577f7706a2",
        "second": "00a6680d-f453-41dd-beca-7594e5680f5a"
      },
      "createdAt": "1559303080684",
      "flags": []
    }
  },
  "timestamp": "1559303080684",
  "seqNo": 56
}

Parametry: rejectionReason oraz exchangeOfferId są opcjonalne i występują jedynie w przypadku określonych akcji:

  • rejected - rejectionReason
  • accepted - exchangeOfferId

Typy akcji:

  • active - oferta stop czeka na aktywację
  • cancelled - oferta stop została usunięta
  • triggered - kurs aktywacji został osiągnięty i kolejna akcja przybierze jedną z dwóch wartości:
  • accepted - oferta została pomyślnie wystawiona/zrealizowana
  • rejected - nie udało się wystawić/zrealizować oferty

Szczegóły odpowiedzi

Klucz
Typ
Opis

action

string

Przeprowadzona akcja: active / accepted / rejected / cancelled / triggered.

rejectionReason

string

Powód odrzucenia dla wystawienia oferty.

exchangeOfferId

UUID

UUID utworzonej oferty.

state

array

Tablica szczegółowych informacji o ofercie.

  • id

UUID

Unikalny identyfikator oferty stop.

  • operationId

UUID

Unikalny identyfikator dla wykonanej czynności.

  • userId

UUID

Unikalny identyfikator Twojego konta.

  • market

string

Rynek w którym została wystawiona oferta stop.

  • amount

decimal

Ilość kryptowaluty.

  • rate

decimal

Kurs po którym zostanie wystawiona oferta. Przyjmuje wartość null w przypadku oferty w trybie stop-market.

  • stopRate

decimal

Kurs aktywacji oferty.

  • status

string

Obecny status oferty stop: active / accepted / rejected / cancelled / triggered.

  • offerType

string

Typ oferty: buy / sell.

  • mode

string

Tryb wykonania oferty: stop-limit / stop-market.

  • balances

array

Tablica portfeli na których ma zostać zrealizowana oferta.

    • first

UUID

Identyfikator portfela dla pierwszej waluty z rynku. W tym przypadku: BTC.

    • second

UUID

Identyfikator portfela dla drugiej waluty z rynku. W tym przypadku: PLN.

  • createdAt

UNIX timestamp

Czas wystawienia oferty stop.

  • flags

array

Tablica dodatkowych flag, które zostały użyte przy stworzeniu oferty. Obecnie żadna z flag nie jest jeszcze dostępna, jednak będą sukcesywnie dodawane w przyszłości.

Portfele

 

Stan środków

Zwraca każdą aktualizację stanu środków na koncie.

 
{
 "action": "subscribe-private",
 "module": "balances",
 "path": "balance/bitbay/updatefunds",
 "hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
  "publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
  "requestTimestamp": 1529897422
}
{
	"id": "60536b59-3fb2-4a8a-ad51-1ef880213da7",
	"userId": "578a2540-8594-4162-8742-26de0c568443",
	"availableFunds": 58934.53,
	"totalFunds": 58934.53,
	"lockedFunds": 0,
	"currency": "PLN",
	"type": "FIAT",
	"name": "Zaa",
	"balanceEngine": "BITBAY"
}

Szczegóły odpowiedzi

Klucz
Typ
Opis

id

UUID

Identyfikator portfela.

userId

UUID

Identyfikator użytkownika.

availableFunds

decimal

Ilość dostępnych środków.

totalFunds

decimal

Całkowita ilość środków.

lockedFunds

decimal

Ilość zablokowanych środków.

currency

string

Kod waluty.

type

string

Typ waluty: crypto / fiat.

name

string

Nazwa portfela.

balanceEngine

string

Nazwa aplikacji, której dotyczy portfel: BITBAY / BITBAYPAY.

Historia

 

Historia transakcji

Informuje o wykonaniu transakcji na wybranym rynku lub na wszystkich dostępnych.

 

Aby otrzymywać wiadomości z każdego z rynków, należy wysłać subskrypcję na: history/transactions

{
 "action": "subscribe-private",
 "module": "trading",
 "path": "history/transactions/xrp-pln",
 "hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
  "publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
  "requestTimestamp": 1529897422
}
{
	"id": "38f29b80-f5ae-48d3-9846-723e45f4ba71",
	"market": "XRP-PLN",
	"time": "1530812763363",
	"amount": "1",
	"rate": "1.77",
	"initializedBy": "Sell",
	"wasTaker": true,
	"userAction": "Sell"
}
{
  "requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
  "action": "proxy",
  "module": "trading",
  "path": "history/transactions",
  "queryString": "markets=BTC-PLN&rateFrom=23000",
  "hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
  "publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
  "requestTimestamp": 1529897422
}

Snapshot Query Params

markets
array of strings

Tablica rynków.

rateFrom
float

Minimalna wartość kursu.

rateTo
float

Maksymalna wartość kursu.

fromTime
date-time

Czas w formacie UNIX timestamp od którego mają zostać pobrane rekordy.

toTime
date-time

Czas w formacie UNIX timestamp do którego mają zostać pobrane rekordy.

userAction
string

Rola jaką użytkownik pełnij w wykonanej transakcji: buy / sell.

nextPageCursor
string

Wskaźnik od którego mają zostać pobrane rekordy. Początkowym wskaźnikiem jest: start.

Szczegóły odpowiedzi są identyczne, jak w przypadku metody GET trading/history/transactions

Szczegóły odpowiedzi

Klucz
Typ
Opis

id

UUID

Unikalny identyfikator transakcji.

market

string

Rynek w którym została wykonana transakcja.

time

UNIX timestamp

Czas wykonania transakcji.

amount

decimal

Ilość kryptowaluty.

rate

decimal

Kurs oferty.

initializedBy

string

Ktora strona zainicjowała transakcję: buy / sell.

wasTaker

boolean

Czy użytkownik zrealizował istniejącą już ofertę innego użytkownika.

userAction

string

Typ akcji wywołanej przez użytkownika: buy /sell.

Historia operacji

 

Wybrana subskrypcja występuje jedynie w postaci snapshota i jest wykonywana przez akcję proxy.

{
  "requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
  "action": "proxy",
  "module": "balances",
  "path": "bitbay/history",
  "queryString": "balanceCurrencies=BTC",
  "hashSignature": "8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720",
  "publicKey": "12345f6f-1b1d-1234-a973-a10b1bdba1a1",
  "requestTimestamp": 1529897422
}
{
  "requestId": "78539fe0-e9b0-4e4e-8c86-70b36aa93d4f",
  "statusCode": 200,
  "body": {
    "status": "Ok",
    "items": [
      {
        "historyId": "3dd7ad49-cb5c-4cd7-828a-8a14db017355",
        "balance": {
          "id": "6d1e6463-a4b5-440e-8d69-83154afce7d0",
          "currency": "LSK",
          "type": "CRYPTO",
          "userId": "578a2540-8594-4162-8742-26de0c568443",
          "name": "Domyślny rachunek LSK"
        },
        "detailId": "8b5dcabf-5a58-4834-9cf5-00b140d3b22c",
        "time": 1521458695099,
        "type": "TRANSACTION_POST_OUTCOME",
        "value": -1435.25890556,
        "fundsBefore": {
          "total": 10000,
          "available": 8564.74109444,
          "locked": 1435.25890556
        },
        "fundsAfter": {
          "total": 8564.74109444,
          "available": 8564.74109444,
          "locked": 0
        },
        "change": {
          "total": -1435.25890556,
          "available": 0,
          "locked": -1435.25890556
        }
      }
    ],
    "hasNextPage": true,
    "fetchedRows": 20,
    "limit": 20,
    "offset": 0,
    "queryTime": 1,
    "totalTime": 5,
    "settings": {
      "balancesId": null,
      "balanceCurrencies": [
        "BTC"
      ],
      "users": [
        "578a2540-8594-4162-8742-26de0c568443"
      ],
      "getHidden": false,
      "engine": "BITBAY",
      "fromTime": 0,
      "toTime": 2229729760000,
      "absValue": false,
      "fromValue": null,
      "toValue": null,
      "sort": [
        {
          "by": "time",
          "order": "DESC"
        }
      ],
      "limit": 20,
      "offset": 0,
      "types": null
    },
    "errors": null
  }
}

Snapshot Query Params

balancesId
array of strings

Tablica identyfikatorów rachunków dla których ma zostać zwrócona historia.

balanceCurrencies
array of strings

Tablica walut dla których ma zostać zwrócona historia.

fromTime
date-time

Czas w formacie UNIX timestamp od którego mają zostać pobrane rekordy.

toTime
date-time

Czas w formacie UNIX timestamp do którego mają zostać pobrane rekordy.

fromValue
float

Minimalna ilość kryptowaluty w transakcji dla której mają zostać pobrane rekordy.

toValue
float

Maksymalna ilość kryptowaluty w transakcji dla której mają zostać pobrane rekordy.

balanceTypes
string

Typ portfela: fiat / crypto.

types
array of strings

Tablica typów operacji. Lista operacji dostępna jest poniżej.

sort
array of objects

Tablica parametrów sortowania: by - pole po którym posortować, order - rodzaj sortowania: ASC/DESC.

Szczegóły odpowiedzi są identyczne, jak w przypadku metody GET balances/BITBAY/history.