상품 아이콘
상품 이미지 우측 상단에 얹는 아이콘(이미지 한 장 · SVG 가능)을 만들고 고치고 지웁니다. 상품의 icon_id 에 넣는 키입니다.
업데이트됨 10.14 — 상품 아이콘 API 와 상품의 icon_id 를 열었습니다무엇인가요
상품 이미지 우측 상단에 얹는 작은 그림입니다 — 목록의 썸네일과 상품 페이지의 대표 이미지에 함께 보입니다. 쇼핑몰 관리자의 상품 등록 · 수정 > 전시 설정 > 아이콘에서 만드는 것과 같습니다. 아이콘을 만들어 두고 상품의 icon_id(상품 등록, 하나)에 키를 넣습니다.
- 배지는 상품명 앞의 글자 표식이고, 아이콘은 사진 위의 그림 표식입니다. 아이콘은 간편제작이 없고 이미지 한 장뿐입니다.
- 이미지는 JPG · PNG · GIF 와 SVG 를 받습니다. 올릴 때
?usage=product.decoration&variant=icon을 붙입니다 — JPG · PNG 는 가로 · 세로 160 안으로 줄이고(정사각 권장), SVG 는 스크립트 · 이벤트 · 바깥 참조를 걷어 내고 크기 그대로 둡니다. - 고치거나 지우면 손님 화면에 바로 반영됩니다.
- 이미지는 file_id 만 믿습니다 — 경로 · 주소는 이 쇼핑몰의 파일 기록에서 채웁니다. 다른 쇼핑몰 · 지운 파일이면 400.
이미지 먼저 올리기
아이콘 이미지는 이미지 업로드에 variant=icon 을 붙여 올립니다. 이때만 SVG 를 받고, 한 번에 한 장입니다.
bash요청
curl -X POST 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/files/images?usage=product.decoration&variant=icon' \
-H 'Authorization: Bearer msat_8Hk2wQ7...' \
-F 'files=@best.png'json201 Created
{
"items": [
{
"file_id": "6ace1b0a6ba8ebc3a773ac21",
"url": "https://cdn.story.store/storages/2026/10/14/9b2f4c1e-5d7a-4e0b-a3f1-2c8d6e4b7a90.png",
"name": "best.png",
"size": 6214,
"width": 160,
"height": 160
}
]
}목록
GET
https://api.mallstory.kr/v1/shop/{shop_unique}/icons권한 products:read
지우지 않은 아이콘을 이름순으로 모두 줍니다(관리자 고르기 목록과 같은 차례).
bash요청
curl 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/icons' \
-H 'Authorization: Bearer msat_8Hk2wQ7...'json200 OK
{
"items": [
{
"icon_unique": "6ace1b0b4555cab633c38e14",
"name": "BEST",
"created": "2026-10-14T05:21:47.318Z",
"updated": "2026-10-14T05:22:20.904Z",
"image": {
"file_id": "6ace1b2c6ba8ebc3a773ac3f",
"url": "https://cdn.story.store/storages/2026/10/14/4e81a7d2-0c3b-4f96-b5e2-7d19a0c6f348.png",
"width": 160,
"height": 160
}
}
]
}응답 필드
| 필드 | 형식 | 설명 |
|---|---|---|
icon_unique | string | 아이콘 키. 상품의 icon_id 에 넣는 값 |
name | string | 아이콘명 |
image | object | file_id · url · width · height(SVG 는 크기가 비어 있을 수 있음) |
created · updated | ISO | 만든 · 고친 시각 |
오류
| 상태 | code | 언제 |
|---|---|---|
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 products:read 가 없음 |
상세
GET
https://api.mallstory.kr/v1/shop/{shop_unique}/icons/{icon_unique}권한 products:read
목록 한 줄과 같은 모양입니다.
bash요청
curl 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/icons/6ace1b0b4555cab633c38e14' \
-H 'Authorization: Bearer msat_8Hk2wQ7...'json200 OK
{
"icon_unique": "6ace1b0b4555cab633c38e14",
"name": "BEST",
"created": "2026-10-14T05:21:47.318Z",
"updated": "2026-10-14T05:21:47.318Z",
"image": {
"file_id": "6ace1b0a6ba8ebc3a773ac21",
"url": "https://cdn.story.store/storages/2026/10/14/9b2f4c1e-5d7a-4e0b-a3f1-2c8d6e4b7a90.png",
"width": 160,
"height": 160
}
}오류
| 상태 | code | 언제 |
|---|---|---|
| 404 | IconNotExist | 없는 키이거나 지운 아이콘 |
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 products:read 가 없음 |
생성
POST
https://api.mallstory.kr/v1/shop/{shop_unique}/icons권한 products:write
요청 본문
| 필드 | 형식 | 설명 |
|---|---|---|
name필수 | string | 아이콘명(20자까지). 관리자가 고를 때 쓰는 이름이고, 손님 화면에서는 그림의 대체 글자(alt)입니다 |
image필수 | file_id | 이미지 업로드(?usage=product.decoration&variant=icon)로 받은 file_id — 문자열 또는 {"file_id": "…"} |
bash요청
curl -X POST 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/icons' \
-H 'Authorization: Bearer msat_8Hk2wQ7...' \
-H 'Content-Type: application/json' \
-d '{"name":"BEST","image":"6ace1b0a6ba8ebc3a773ac21"}'json201 Created
{
"icon_unique": "6ace1b0b4555cab633c38e14",
"name": "BEST",
"created": "2026-10-14T05:21:47.318Z",
"updated": "2026-10-14T05:21:47.318Z",
"image": {
"file_id": "6ace1b0a6ba8ebc3a773ac21",
"url": "https://cdn.story.store/storages/2026/10/14/9b2f4c1e-5d7a-4e0b-a3f1-2c8d6e4b7a90.png",
"width": 160,
"height": 160
}
}json400 — 이 쇼핑몰에 올린 이미지가 아님
{
"code": "InvalidParameterValue",
"message": "아이콘 이미지: 이 쇼핑몰에 올린 이미지가 아니거나 지워진 이미지입니다(6ace1b0a0021241bbb288c07). 이미지를 다시 올려 받은 file_id 를 넣으세요.",
"request_id": "req_3f0d2a9c7e1b4c58a6d4e2f190b7c3a5"
}오류
| 상태 | code | 언제 |
|---|---|---|
| 400 | InvalidParameterValue | 이름 없음 · 20자 넘음 · 이미지 없음 · 이 쇼핑몰 파일이 아님 |
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 products:write 가 없음 |
수정
PATCH
https://api.mallstory.kr/v1/shop/{shop_unique}/icons/{icon_unique}권한 products:write
보낸 필드만 바뀝니다. 필드는 생성과 같습니다. 이미지를 바꿔 끼우면 옛 이미지 파일은 지워집니다.
bash요청
curl -X PATCH 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/icons/6ace1b0b4555cab633c38e14' \
-H 'Authorization: Bearer msat_8Hk2wQ7...' \
-H 'Content-Type: application/json' \
-d '{"image":"6ace1b2c6ba8ebc3a773ac3f"}'json200 OK
{
"icon_unique": "6ace1b0b4555cab633c38e14",
"name": "BEST",
"created": "2026-10-14T05:21:47.318Z",
"updated": "2026-10-14T05:22:20.904Z",
"image": {
"file_id": "6ace1b2c6ba8ebc3a773ac3f",
"url": "https://cdn.story.store/storages/2026/10/14/4e81a7d2-0c3b-4f96-b5e2-7d19a0c6f348.png",
"width": 160,
"height": 160
}
}오류
| 상태 | code | 언제 |
|---|---|---|
| 400 | InvalidParameterValue | 생성과 같음 |
| 404 | IconNotExist | 없는 키이거나 지운 아이콘 |
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 products:write 가 없음 |
삭제
DELETE
https://api.mallstory.kr/v1/shop/{shop_unique}/icons/{icon_unique}권한 products:write
아이콘을 지우고, 쓰던 상품의 icon_id 를 null 로 비웁니다(상품의 updated 는 그대로). affected 는 비운 상품 수입니다. 이미지 파일도 지워집니다.
bash요청
curl -X DELETE 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/icons/6ace1b0b4555cab633c38e14' \
-H 'Authorization: Bearer msat_8Hk2wQ7...'json200 OK
{
"deleted": true,
"icon_unique": "6ace1b0b4555cab633c38e14",
"affected": 0
}오류
| 상태 | code | 언제 |
|---|---|---|
| 404 | IconNotExist | 없는 키이거나 이미 지운 아이콘 |
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 products:write 가 없음 |