> ## Documentation Index
> Fetch the complete documentation index at: https://docs.4casters.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 4casters 訂單 API

4casters 訂單 API 透過原始 WebSocket 連線支援即時下單、取消和會話管理。

<h2 id="endpoints">
  端點
</h2>

* **訂單 API**：`wss://orders-api.4casters.io/orders/ws`

<h2 id="auth">
  認證
</h2>

連線使用 4Casters 令牌進行認證。在 WebSocket 握手時於
`Authorization` 請求標頭中傳送令牌。伺服器從令牌推導使用者
— **URL 中無需使用者名稱**。

<h3 id="get-a-token">
  獲取令牌
</h3>

沒有單獨的 API 金鑰。使用你的 4Casters 使用者名稱和密碼，呼叫 4Casters REST API 的
`/user/login` 端點登入。回應中包含可在此處使用的令牌。令牌有效期與輪換見
[認證](/zh-Hant/pages/authentication)。

見 [4Casters REST API 文件中的 `POST /user/login`](/zh-Hant/pages/rest/authentication)。

<h3 id="connect">
  連線
</h3>

<CodeGroup>
  ```javascript JavaScript theme={null}
  const WebSocket = require('ws');
  const token = process.env.FOURCASTERS_TOKEN;
  const ws = new WebSocket('wss://orders-api.4casters.io/orders/ws', {
    headers: { Authorization: token },
  });
  ```
</CodeGroup>

<h2 id="message-format">
  訊息格式
</h2>

每個用戶端請求都是二元組 `[messageType, payload]`。每個酬載都應包含你生成的 `requestID`；伺服器會原樣回傳，以便你關聯回應。

<CodeGroup>
  ```json 請求 theme={null}
  [
    "messageType",
    {
      "requestID": "YOUR_REQUEST_ID",
      "...": "..."
    }
  ]
  ```
</CodeGroup>

伺服器回應是帶有 `requestID` 以及 `data`（成功）或 `error`（失敗）的 JSON 物件：

<CodeGroup>
  ```json 成功 theme={null}
  {
    "requestID": "YOUR_REQUEST_ID",
    "data": { "...": "..." }
  }
  ```

  ```json 錯誤 theme={null}
  {
    "requestID": "YOUR_REQUEST_ID",
    "error": "human-readable error"
  }
  ```
</CodeGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.