# 调整锁单明细（写；带归属校验）

`PATCH /api/v1/reservations/{reservation_id}` — 需要 token · pdstock:write · 写操作 · 2 点

锁单

## 路径参数

| 名称 | 类型 | 说明 |
| --- | --- | --- |
| `reservation_id` **必填** | string | 锁单单据号，从锁单列表拿到。只能查 / 改本渠道自己的单。 (最长 64) |

## 请求体（JSON）

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `lines` **必填** | array<object> | 明细数组，每项 { sku, quantity }。至少一项；quantity=0 在调整锁单 / 购物车时表示去掉这一行。 (1–1000) |
| `lines[].sku` **必填** | string | SKU / 条码——**具体到颜色和尺码**的那一层，如 OB0021611。查整个款请改用 product_code。 (最长 64) |
| `lines[].quantity` **必填** | integer | 件数，正整数，如 2。锁单调整 / 购物车里传 0 表示去掉这一行。 (0–99999) |
| `note` | string | 备注（选填，最长 500 字）。 (最长 500) |

## 响应

响应信封只看 HTTP 状态码：成功是 2xx，正文 `{ data: … }`（列表另带 `page / page_size / has_more` 或 `total_count`）；失败是 4xx / 5xx，正文 `{ error: { code, message, hint, request_id, doc_url } }`。

```json
{
  "data": { … }
}
```

成功响应里没有任何给人看的文字——没有 `code / result / msg`。`error.code` 是唯一该用程序判断的字段，`message` 跟随 `Accept-Language`。

> 写操作请带 `Idempotency-Key` 头（任意唯一串，如 UUID）：网络重试不会重复下单。下单默认只建草稿，由人在 ERP 确认后生效。

## 示例

### curl

```bash
curl -X PATCH "https://connect.everugg.net.au/api/v1/reservations/{reservation_id}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: <uuid>" \
  -d '{ "lines": [ { "sku": "OB0021611", "quantity": 2 } ] }'
```

### Python

```python
import requests

r = requests.patch(
    "https://connect.everugg.net.au/api/v1/reservations/{reservation_id}",
    headers={"Authorization": "Bearer " + TOKEN, "Idempotency-Key": str(uuid.uuid4())},
    json={
      "lines": [
        {
          "sku": "OB0021611",
          "quantity": 2
        }
      ]
    },
)
data = r.json()
r.raise_for_status()  # 4xx/5xx: data["error"]["code"] / ["hint"]
```

### Node

```js
const res = await fetch("https://connect.everugg.net.au/api/v1/reservations/{reservation_id}", {
  method: "PATCH",
  headers: { Authorization: `Bearer ${TOKEN}`, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID() },
  body: JSON.stringify({
    "lines": [
      {
        "sku": "OB0021611",
        "quantity": 2
      }
    ]
  }),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error?.code}: ${data.error?.message}`)
```

### Java

```java
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://connect.everugg.net.au/api/v1/reservations/{reservation_id}"))
    .header("Authorization", "Bearer " + token)
    .header("Content-Type", "application/json")
    .header("Idempotency-Key", UUID.randomUUID().toString())
    .PATCH(HttpRequest.BodyPublishers.ofString("{ \"lines\": [ { \"sku\": \"OB0021611\", \"quantity\": 2 } ] }"))
    .build();
HttpResponse<String> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
```

---
Markdown 源: https://connect.everugg.net.au/reference/patch-api-v1-reservations-reservation-id.md?lang=zh · 网页版: https://connect.everugg.net.au/reference?op=patch-api-v1-reservations-reservation-id&lang=zh
