Страница переведена сообществом и носит справочный характер; актуальна английская версия.
Оригинал ↗

Post-запросы

Эта страница описывает отправку запросов с помощью WebSocket API.

Формат запроса

WebSocket API поддерживает отправку запросов, которые обычно отправляются через HTTP API. Эти запросы представляют собой либо info-запросы, либо подписанные действия. Примеры полезных нагрузок info-запросов приведены в разделе конечной точки Info. Примеры полезных нагрузок подписанных действий приведены в разделе конечной точки Exchange.

Чтобы отправить такую полезную нагрузку любого из двух типов через WebSocket API, её необходимо обернуть следующим образом:

{
  "method": "post",
  "id": <number>,
  "request": {
    "type": "info" | "action",
    "payload": { ... }
  }
}

Примечание: поля method и id обязательны. Рекомендуется использовать уникальный id для каждого отправляемого post-запроса, чтобы отслеживать незавершённые запросы через канал.

Примечание: запросы explorer через WebSocket не поддерживаются.

Формат ответа

Сервер отвечает на post-запросы либо успехом, либо ошибкой. В случае ошибки возвращается String, отражающий код статуса HTTP и описание, которые были бы возвращены при отправке запроса через HTTP.

{
  "channel": "post",
  "data": {
    "id": <number>,
    "response": {
      "type": "info" | "action" | "error",
      "payload": { ... }
    }
  }
}

Примеры

Вот несколько примеров подписки на различные каналы с помощью сообщений подписки:

Отправка info-запроса L2Book:

{
  "method": "post",
  "id": 123,
  "request": {
    "type": "info",
    "payload": {
      "type": "l2Book",
      "coin": "ETH",
      "nSigFigs": 5,
      "mantissa": null
    }
  }
}

Пример ответа:

{
  "channel": "post",
  "data": {
    "id": <number>,
    "response": {
      "type": "info",
      "payload": {
        "type": "l2Book",
        "data": {
          "coin": "ETH",
          "time": <number>,
          "levels": [
            [{"px":"3007.1","sz":"2.7954","n":1}],
            [{"px":"3040.1","sz":"3.9499","n":1}]
          ]
        }
      }
    }
  }
}

Отправка запроса подписанного действия order:

{
  "method": "post",
  "id": 256,
  "request": {
    "type": "action",
    "payload": {
      "action": {
        "type": "order",
        "orders": [{"a": 4, "b": true, "p": "1100", "s": "0.2", "r": false, "t": {"limit": {"tif": "Gtc"}}}],
        "grouping": "na"
      },
      "nonce": 1713825891591,
      "signature": {
        "r": "...",
        "s": "...",
        "v": "..."
      },
      "vaultAddress": "0x12...3"
    }
  }
}

Пример ответа:

{
  "channel": "post",
  "data": {
    "id": 256,
    "response": {
      "type":"action",
      "payload": {
        "status": "ok",
        "response": {
          "type": "order",
          "data": {
            "statuses": [
              {
                "resting": {
                  "oid": 88383,
                }
              }
            ]
          }
        }
      }
    }
  }
}
Неофициальный перевод сообщества. Права на контент принадлежат Hyperliquid; актуальна английская версия. Источник: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/post-requests