# 도매 주문 생성(기본은 초안; auto_confirm=true 면 승인 제출)

`POST /api/v1/orders` — 토큰 필요 · order:write · 쓰기 · 2포인트

도매 주문

## 요청 본문(JSON)

| 필드 | 타입 | 설명 |
| --- | --- | --- |
| `warehouse_code` **필수** | string | 창고 코드: AU(호주 전체 — 합계 뷰), AUSYD2(시드니 메인, Rosehill), AUSYD1(시드니 액세서리), CN(중국 전체 — 합계 뷰), CHNZJ1(전장). 전체 목록: GET /api/v1/warehouses. |
| `lines` **필수** | array<object> | 명세 배열, 각 { sku, quantity }. 최소 1건; 예약 조정 시 quantity=0 은 해당 행 삭제. (1–1000) |
| `lines[].sku` **필수** | string | SKU / 바코드 — **색상 + 사이즈** 단위, 예: OB0021611. 스타일 전체는 product_code 를 쓰세요. (최대 길이 64) |
| `lines[].quantity` **필수** | integer | 수량(양의 정수, 예: 2). 예약 조정 / 장바구니에서 0 은 해당 행 삭제. (0–99999) |
| `note` | string | 비고(선택, 최대 500자). (최대 길이 500) |
| `client_order_number` | string | 내 시스템의 주문번호(드롭쉬핑 주문 생성 시 보낸 값). (최대 길이 64) |
| `auto_confirm` | boolean | 즉시 제출 여부(선택). **생략 = 초안만** 생성되며 ERP 에서 사람이 확인해야 효력이 생깁니다 — 의도된 기본값입니다. 제출된 드롭쉬핑 주문은 즉시 배정되며 더 이상 수정할 수 없습니다. |
| `shipping` | object | OMS 계정으로 도매 주문을 넣을 때 필요한 배송 정보. 내부: shipping_method_id(GET /api/v1/shipping-methods), address_id(GET /api/v1/addresses), carrier_id(선택), pickup_at(자가 수령일 때만). 전체를 생략하면 OMS 계정의 기본 설정을 사용하며, 기본값도 없으면 안내와 함께 오류를 돌려줍니다. |
| `shipping.shipping_method_id` | string | 배송 방식 ID. GET /api/v1/shipping-methods 에서 가져옵니다. (최대 길이 64) |
| `shipping.carrier_id` | string | 물류사 ID(선택). GET /api/v1/carriers 에서 가져옵니다. (최대 길이 64) |
| `shipping.address_id` | string | 배송지 ID. GET /api/v1/addresses 에서 가져오며, 주소록은 OMS 사이트의 사용자 → 환경설정에서 관리합니다. (최대 길이 64) |
| `shipping.pickup_at` | string | 수령 시각(선택, 자가 수령 방식에서만), 예: 2026-09-10T14:00:00. (최대 길이 32) |

## 응답

봉투는 HTTP 상태 코드만으로 판단합니다: 2xx 는 `{ data: … }`(목록은 `page / page_size / has_more` 또는 `total_count` 포함); 4xx / 5xx 는 `{ error: { code, message, hint, request_id, doc_url } }`.

응답 헤더: `HTTP/1.1 201 Created`

```json
{
  "data": { "order_id": "SO2026090300123", "channel_code": "100780", "warehouse_code": "AU",
    "status": 0, "lines": [{ "sku": "OB0021611", "quantity": 2 }], "created_date": "2026-09-03" }
}
```

성공 응답에는 사람이 읽는 문구가 없습니다 — `code / result / msg` 없음. 프로그램이 분기해야 할 필드는 `error.code` 뿐이며 `message` 는 `Accept-Language` 를 따릅니다.

> 쓰기 요청에는 `Idempotency-Key` 헤더(UUID 등 고유 문자열)를 보내세요. 네트워크 재시도로 주문이 두 번 생기지 않습니다. 주문은 ERP에서 사람이 확인하기 전까지 초안입니다.

## 예제

### curl

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

### Python

```python
import requests

r = requests.post(
    "https://connect.everugg.net.au/api/v1/orders",
    headers={"Authorization": "Bearer " + TOKEN, "Idempotency-Key": str(uuid.uuid4())},
    json={
      "warehouse_code": "AU",
      "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/orders", {
  method: "POST",
  headers: { Authorization: `Bearer ${TOKEN}`, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID() },
  body: JSON.stringify({
    "warehouse_code": "AU",
    "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/orders"))
    .header("Authorization", "Bearer " + token)
    .header("Content-Type", "application/json")
    .header("Idempotency-Key", UUID.randomUUID().toString())
    .POST(HttpRequest.BodyPublishers.ofString("{ \"warehouse_code\": \"AU\", \"lines\": [ { \"sku\": \"OB0021611\", \"quantity\": 2 } ] }"))
    .build();
HttpResponse<String> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
```

---
Markdown 원본: https://connect.everugg.net.au/reference/post-api-v1-orders.md?lang=ko · 웹 페이지: https://connect.everugg.net.au/reference?op=post-api-v1-orders&lang=ko
