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.zondacrypto.exchange/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}"
}