Questa pagina è una traduzione della community e ha solo scopo informativo; fa fede la versione originale in inglese.
Versione originale ↗

Richieste post

Questa pagina descrive l'invio di richieste tramite l'API WebSocket.

Formato della richiesta

L'API WebSocket supporta l'invio delle richieste che normalmente è possibile inviare tramite l'API HTTP. Queste richieste sono richieste info o azioni firmate. Per esempi di payload delle richieste info, consultare la sezione relativa all'endpoint Info. Per esempi di payload delle azioni firmate, consultare la sezione relativa all'endpoint Exchange.

Per inviare tale payload per entrambi i tipi tramite l'API WebSocket, è necessario racchiuderlo come segue:

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

Nota: i campi method e id sono obbligatori. Si consiglia di utilizzare un id univoco per ogni richiesta post inviata, al fine di tenere traccia delle richieste in sospeso attraverso il canale.

Nota: le richieste explorer non sono supportate tramite WebSocket.

Formato della risposta

Il server risponde alle richieste post con un esito positivo o con un errore. In caso di errore, viene restituita una String che riproduce il codice di stato HTTP e la descrizione che sarebbero stati restituiti se la richiesta fosse stata inviata tramite HTTP.

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

Esempi

Di seguito alcuni esempi di sottoscrizione a diversi feed tramite i messaggi di sottoscrizione:

Invio di una richiesta info L2Book:

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

Risposta di esempio:

{
  "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}]
          ]
        }
      }
    }
  }
}

Invio di una richiesta di azione firmata relativa a un ordine:

{
  "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"
    }
  }
}

Risposta di esempio:

{
  "channel": "post",
  "data": {
    "id": 256,
    "response": {
      "type":"action",
      "payload": {
        "status": "ok",
        "response": {
          "type": "order",
          "data": {
            "statuses": [
              {
                "resting": {
                  "oid": 88383,
                }
              }
            ]
          }
        }
      }
    }
  }
}
Traduzione non ufficiale della community della documentazione Hyperliquid. Contenuti © Hyperliquid; fa fede la versione inglese. Fonte: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/post-requests