xRocket WebSocket API
API WebSocket обеспечивает потоковую передачу данных в реальном времени для торговли и управления аккаунтом.
Как подключить?
Используйте следующий URL-адрес для подключения вашего проекта к xRocket WebSocket API:
Для testnet:
Чтобы поддерживать соединение активным и предотвратить его закрытие сервером через 60 секунд, отправляйте сообщение ping каждые 30 секунд.
Пример ping-сообщения:
{
"id": "12345",
"method": "ping"
}
Формат сообщения
Сообщения используют формат JSON со следующей структурой:
{
"id": "12345",
"method": "method_name",
"params": {
// параметры, специфичные для метода, например, имя канала для подписки, тикер или токен аутентификации
}
}
Рекомендации по использованию ID запроса:
- Каждый запрос должен содержать поле с уникальным
id(string или числовое значение). idиспользуется для сопоставления запросов с соответствующими ответами.
Пример запроса на подписку:
{
"id": "request_id",
"method": "subscribe",
"params": {
"channel": "ticker",
"symbol": "BTC-USDT",
"interval": "1day"
}
}
Потоковые уведомления используют формат подписки:
{
"method": "subscription",
"params": {
"channel": "ticker",
"symbol": "BTC-USDT",
"interval": "1day",
"data": {
// данные специфичные для канала
}
}
}
Каналы
| Канал | Описание |
|---|---|
| Публичные каналы | Предоставляют общедоступные рыночные данные, такие как тикеры, книги ордеров и пр. Аутентификация не требуется. |
| Тикер | Обновления тикера. |
| Все тикеры | Обновления тикеров для всех символов. |
| Книга ордеров | Обновления книги ордеров. |
| Сделки | Обновления сделок для определённых символов. |
| Свечи | Данные свечей. |
| Приватные каналы | Предоставляют данные об аккаунте. Требуется аутентификация. |
| Балансы | Обновления балансов аккаунта. |
| Активные ордеры | Обновления ордеров аккаунта. |
Аутентификация
- Получите токен JWT вашего аккаунта xRocket. В Telegram-боте перейдите в Меню - Настройки - Настройки биржи - API-токен или обратитесь в службу поддержки xRocket. Токен должен быть выдан для вашей учетной записи и привязан к вашему идентификатору пользователя xRocket (хранится в нашей базе данных). Сервер извлекает и проверяет идентификатор пользователя из утверждений JWT.
- Используйте свой JWT в качестве токена API. Отправьте токен с помощью метода auth сразу после подключения.
Используйте testnet-бота для получения токена для testnet-интеграций.
Пример запроса аутентификации:
{
"id": "1",
"method": "auth",
"params": {
"token": "<your_jwt_token_here>"
}
}
Успешный ответ:
{
"id": "1",
"result": {
"success": true
}
}
Ответ с ошибкой:
{
"id": "1",
"error": {
"code": -32034,
"message": "User Blocked",
"data": {
"detail": "Invalid authentication"
}
}
}
Методы
ping— Проверка подключенияauth— Аутентификация подключения для приватных потоков данныхsubscribe— Подписка на поток данныхunsubscribe— Отписка от потока данныхunsubscribeAll— Отписка от всех активных потоков данных
Отписка
Пример запроса отписки от определённых потоков данных:
{
"id": "12345",
"method": "unsubscribe",
"params": {
"channel": "channel_name"
}
}
Отписка от всех
Пример запроса на отписку от всех активных потоков данных:
{
"id": "12345",
"method": "unsubscribeAll"
}
Обработка ошибок
Коды ошибок API Websocket соответствуют спецификации JSON-RPC.
Наши коды ошибок
| Код ошибки | Описание |
|---|---|
| -32700 | Ошибка парсинга — Сервер получил некорректный JSON. |
| -32600 | Некорректный запрос — Отправленный JSON не является валидным объектом Request. |
| -32601 | Метод не найден — Метод не существует или недоступен. |
| -32602 | Некорректные параметры — Недопустимый(ые) параметр(ы) метода. |
| -32603 | Внутренняя ошибка — Внутренняя ошибка JSON-RPC. |
| -32000 | Неверное количество знаков после запятой — Запрошенное количество десятичных знаков не поддерживается. |
| -32001 | Ордер не найден — Указанный Ордер не найден. |
| -32002 | Уже подписаны — Соединение уже подписано на этот поток данных. |
| -32003 | Не подписаны — Попытка отписаться от канала без активной подписки. |
| -32005 | Торговый символ не найден — Запрошенный торговый символ не найден. |
| -32006 | Некорректный символ — Предоставленный символ недействителен. |
| -32007 | Символ недоступен — Символ в настоящее время недоступен для торговли. |
| -32008 | Слишком большой интервал — Запрошенный временной интервал слишком большой. |
| -32009 | Торговля по символу не открыта — Торговля по этому символу еще не началась или приостановлена. |
| -32010 | Актив недоступен — Запрошенный актив недоступен. |
| -32011 | Некорректная точность — Запрошенная точность цены или количества не поддерживается. |
| -32030 | Недействительный токен — Предоставленный токен аутентификации недействителен, истек или аннулирован. |
| -32032 | Ошибка валидации — Произошла ошибка при проверке входящих данных. |
| -32033 | Неавторизованный доступ — Недостаточно разрешений для выполнения операции. |
| -32034 | Пользователь заблокирован — Учетная запись пользователя была заблокирована. |
| -32050 | Превышен лимит запросов — Слишком много запросов. Пожалуйста, повторите попытку позже. |
Формат ответа ошибки
{
"id": "1205411",
"error": {
"code": -32034,
"message": "User Blocked",
"data": {
// данные и поля, специфичные для ошибки
"detail": "Invalid authentication"
}
}
}