상품 일괄 처리
고른 상품 여러 개의 항목 하나를 한 번에 바꾸거나, 전시 · 판매를 켜고 끄거나, 지웁니다. 관리자 상품 목록의 일괄 처리와 같습니다.
업데이트됨 10.26 — 상품 일괄 정보수정 항목이 늘고, 할인 / 적립금이 둘로 나뉘었습니다이 쪽은
관리자 상품 목록에서 상품을 골라 누르는 일괄 정보수정 · 전시변경 · 판매변경 · 삭제와 같습니다. 주소 하나에 action 으로 고릅니다. 상품마다 상품 수정 · 상품 삭제와 같은 길을 지나므로 규칙 · 키 검사 · 감사 기록이 한 건씩 할 때와 같습니다.
- 한 번에 1,000개까지. 일부가 실패해도 나머지는 처리하고
200으로 돌려줍니다 — 무엇이 안 됐는지는failed로 봅니다. - 본문이 틀리면(모르는 항목 · 항목 밖의 칸 · 잘못된 값 · 잘못된 키) 한 건도 건드리기 전에
400입니다. - 상품마다 다른 값을 넣으려면 상품 수정을 한 건씩 부릅니다. 이 주소는 같은 값을 여러 상품에 덮어씁니다.
정보수정
POST
https://api.mallstory.kr/v1/shop/{shop_unique}/products/bulk권한 products:write
항목 하나의 값을 고른 상품 모두에 덮어씁니다. 아래는 판매가를 12,000원으로 — 셋 다 됐습니다.
bash요청
curl -X POST 'https://api.mallstory.kr/v1/shop/{shop_unique}/products/bulk' \
-H 'Authorization: Bearer msat_8Hk2wQ7...' \
-H 'Content-Type: application/json' \
-d '{"action":"update","product_uniques":["6acdc089c2ca90eedea621e1","6acdc089c2ca90eedea621e2","6acdc089c2ca90eedea621e3"],"field":"sale-price","patch":{"sale_price":12000}}'json200 OK
{
"done": 3,
"failed": []
}응답 필드
| 필드 | 형식 | 설명 |
|---|---|---|
done | number | 처리한 상품 수 |
failed | array | 처리하지 못한 상품. 비어 있으면 모두 됐습니다 |
failed[].product_unique | string | 그 상품 키 |
failed[].code | string | 까닭 코드 — 한 건 수정의 오류 코드와 같고(ReferenceNotFound · InvalidParameterValue 등), 일괄 처리에만 있는 OptionProduct(옵션 상품의 재고 · 원가 · 색상 · 사이즈 · 관리코드, 이미 옵션이 있는 상품의 주문옵션)가 더 있습니다 |
failed[].message | string | 까닭 문장(관리자 화면과 같음) |
- 재고수량 · 원가 · 색상 · 사이즈 · 관리코드는 옵션이 있는 상품에서 옵션마다 갖는 값이라 그 상품은 건너뛰고 실패(
OptionProduct)로 돌려줍니다 — 아래 응답은 원가를 셋에 넣은 결과입니다. - json200 OK — 옵션 상품 하나 실패
{ "done": 2, "failed": [ { "product_unique": "6acdc089c2ca90eedea621e3", "code": "OptionProduct", "message": "주문옵션이 적용된 상품은 일괄 정보수정을 통해 [재고수량], [원가], [색상], [사이즈], [관리코드]를 변경할 수 없습니다. 상품 수정 페이지로 접근하여 [주문 옵션]란에서 각각 수정하시기 바랍니다." } ] }
오류
| 상태 | code | 언제 |
|---|---|---|
| 400 | InvalidParameterValue | field 가 없거나 모름 · patch 에 항목 밖의 칸("sale-price 항목은 patch 에 sale_price 만 받습니다: name") · patch 값이 틀림 · product_uniques 가 비었거나 1,000개 넘음 · 잘못된 키 |
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 products:write 가 없음 |
배송 방식 바꾸기
delivery-PARCEL · delivery-DIRECT · delivery-QUICK · delivery-PICKUP 은 그 방식 한 줄만 바꿔 끼우고 다른 방식은 그대로 둡니다.
- 켜기 · 템플릿 바꾸기 —
"patch": {"delivery": [{"method": "QUICK", "template_id": "…"}]}. 템플릿은 같은 방식의 이 쇼핑몰 템플릿이어야 합니다(아니면 그 상품이ReferenceNotFound). - 끄기 —
"patch": {"delivery": []}. 끄고 나서 배송 방식이 하나도 남지 않으면 그 상품은 배송없음이 됩니다. - 배송없음 상품에 방식을 켜면 배송 상품이 됩니다 — 배송여부는 남은 방식으로 정합니다.
- 쇼핑몰이 상품 옵션 설정에서 배송여부를 숨겼으면(모든 상품이 배송 고정) 마지막 방식을 끄는 상품은 배송없음이 되지 않고 실패(
InvalidParameterValue)로 돌려줍니다.
bash요청 — 퀵배송 켜기
curl -X POST 'https://api.mallstory.kr/v1/shop/{shop_unique}/products/bulk' \
-H 'Authorization: Bearer msat_8Hk2wQ7...' \
-H 'Content-Type: application/json' \
-d '{"action":"update","product_uniques":["6acdc089c2ca90eedea621e1"],"field":"delivery-QUICK","patch":{"delivery":[{"method":"QUICK","template_id":"6abf72da1454015871f8be50"}]}}'json그 상품의 delivery(상세)
[
{
"method": "PARCEL",
"template_id": "6a9fa2affc6e77ca0e475e4c"
},
{
"method": "QUICK",
"template_id": "6abf72da1454015871f8be50"
}
]주문옵션 · 이미지 바꾸기
option-select 는 option_info 와 options 를 함께 받습니다(필드는 상품 등록과 같음). 옵션별 재고 · 관리코드 · 장바구니에 담긴 옵션이 한꺼번에 바뀌지 않도록 갈래가 둘입니다.
- 설정 —
option_info.names와options를 모두 채웁니다. 옵션이 없는 상품에만 새로 붙고, 이미 옵션이 있는 상품은 건너뛰고 실패(OptionProduct)입니다. 그 상품은 상품 수정으로 고칩니다. - 설정안함 —
"patch": {"option_info": {"names": []}, "options": []}. 옵션이 있는 상품의 옵션을 모두 지웁니다(상품 재고는 마지막 옵션 재고 합계가 남음). 옵션이 없는 상품은 건드리지 않고 성공으로 셉니다. - 한쪽만 비어 오면(옵션명만 · 행만) 한 건도 건드리기 전에
400입니다. image·detail과 옵션 이미지는 한 파일을 여러 상품이 같이 쓰지 않도록 상품마다 파일을 복사해 붙입니다 — 상품 수만큼 저장 용량을 씁니다.
전시변경 · 판매변경
POST
https://api.mallstory.kr/v1/shop/{shop_unique}/products/bulk권한 products:write
display 는 전시를, sale 은 판매를 켜고 끕니다. 켤 때 전시기간이 걸려 있던 상품은 기간 전시로 돌아가고, 판매를 켜도 재고가 0 이면 품절로 저장됩니다.
bash요청
curl -X POST 'https://api.mallstory.kr/v1/shop/{shop_unique}/products/bulk' \
-H 'Authorization: Bearer msat_8Hk2wQ7...' \
-H 'Content-Type: application/json' \
-d '{"action":"display","product_uniques":["6acdc089c2ca90eedea621e1","6acdc089c2ca90eedea621e2","6acdc089c2ca90eedea621e3"],"value":false}'json200 OK
{
"done": 3,
"failed": []
}오류
| 상태 | code | 언제 |
|---|---|---|
| 400 | InvalidParameterValue | value 가 true · false 가 아님 |
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 products:write 가 없음 |
삭제
POST
https://api.mallstory.kr/v1/shop/{shop_unique}/products/bulk권한 products:write
고른 상품을 지웁니다. 상품 삭제와 같고 되돌릴 수 없습니다.
bash요청
curl -X POST 'https://api.mallstory.kr/v1/shop/{shop_unique}/products/bulk' \
-H 'Authorization: Bearer msat_8Hk2wQ7...' \
-H 'Content-Type: application/json' \
-d '{"action":"delete","product_uniques":["6acdc089c2ca90eedea621e1","6acdc089c2ca90eedea621e2","6acdc089c2ca90eedea621e3"]}'json200 OK
{
"done": 3,
"failed": []
}오류
| 상태 | code | 언제 |
|---|---|---|
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 products:write 가 없음 |