Mall StoryDevelopers
관리자 API회원 관리소유자 토큰

회원 등급

회원 등급과 등급 할인 · 적립금 규칙을 만들고 고치고 지웁니다(회원등급 설정).

무엇인가요

쇼핑몰 관리자 > 회원 > 회원등급 설정과 같은 작업입니다. 등급마다 할인 · 적립금 규칙을 두고, 회원의 level_unique 로 등급을 겁니다(회원 수정). 등급 할인가는 쇼핑몰 조회의 final_price 에 바로 반영됩니다.

  • 등급은 최대 30개입니다. 레벨(level)이 높을수록 높은 등급이고, 같은 레벨은 둘 수 없습니다.
  • 비회원 등급(is_guest, 레벨 0) — 로그인하지 않은 손님의 등급입니다. 지울 수 없고 이름만 고칠 수 있습니다(할인 · 적립은 늘 비어 있음).
  • 기본 등급(is_default) — 새로 가입한 회원이 받는 등급입니다. 지울 수 없습니다.
  • 회원이 쓰고 있는 등급은 회원을 다른 등급으로 옮긴 뒤에 지울 수 있습니다.
요청경로바로가기권한
GET/levels목록customers:read
POST/levels생성customers:write
PATCH/levels/{level_unique}수정customers:write
DELETE/levels/{level_unique}삭제customers:write

목록

GEThttps://api.mallstory.kr/v1/shop/{shop_unique}/levels

권한 customers:read

bash요청
curl 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/levels' \
  -H 'Authorization: Bearer msat_8Hk2wQ7...'
json200 OK (두 줄만)
{
  "items": [
    {
      "name": "비회원",
      "level": 0,
      "sort_order": 0,
      "is_default": false,
      "is_guest": true,
      "discount": {
        "enabled": false,
        "threshold": 0,
        "value": 0,
        "unit": "WON",
        "max_amount": 0
      },
      "reward": {
        "enabled": false,
        "threshold": 0,
        "value": 0,
        "unit": "WON",
        "max_amount": 0
      },
      "level_unique": "6aa7ca8790b69e4421dc7de2",
      "created": "2026-09-14T10:20:55.701Z",
      "updated": "2026-09-21T08:39:39.809Z",
      "member_count": 0
    },
    {
      "name": "일반회원",
      "sort_order": 1,
      "is_default": true,
      "discount": {
        "enabled": false,
        "threshold": 0,
        "value": 25,
        "unit": "PERCENT"
      },
      "reward": {
        "enabled": false,
        "threshold": 0,
        "value": 15,
        "unit": "PERCENT"
      },
      "level": 1,
      "is_guest": false,
      "level_unique": "6a9fbdedfc6e77ca0e475eb2",
      "created": "2026-09-08T07:49:01.528Z",
      "updated": "2026-09-15T02:13:06.844Z",
      "member_count": 2
    }
  ]
}

응답 필드

필드형식설명
level_uniquestring등급 키. 회원의 level_unique 에 넣는 값
namestring등급 이름
levelnumber레벨 — 0 비회원 · 1 이상 회원(높을수록 높은 등급)
sort_ordernumber목록 차례
is_guestboolean비회원 등급인가
is_defaultboolean새로 가입한 회원이 받는 등급인가
discount.enabledboolean등급 할인을 주는가
discount.thresholdnumber이 금액(원) 이상 살 때만. 0 이면 조건 없음
discount.valuenumber값 — unit 이 PERCENT 면 %(정수), WON 이면 원
discount.unitstring단위 코드값
discount.max_amountnumber한 번에 줄 수 있는 최대 금액(원). 0 이면 제한 없음
reward.enabledboolean등급 적립금을 주는가
reward.thresholdnumber이 금액(원) 이상 살 때만. 0 이면 조건 없음
reward.valuenumber값 — unit 이 PERCENT 면 %(정수), WON 이면 원
reward.unitstring단위 코드값
reward.max_amountnumber한 번에 줄 수 있는 최대 금액(원). 0 이면 제한 없음
member_countnumber이 등급의 회원 수
createdISO생성 시각
updatedISO마지막 수정 시각

오류

상태code언제
401MissingLoginSessionAuthorization 헤더에 Bearer 토큰이 없음
401InvalidAccessToken토큰이 틀리거나 만료 · 폐기됨
403InsufficientScope토큰에 customers:read 가 없음

생성

POSThttps://api.mallstory.kr/v1/shop/{shop_unique}/levels

권한 customers:write

요청 본문

필드형식설명
name필수string등급 이름(30자까지)
levelnumber레벨(1 이상, 다른 등급과 겹치면 안 됨). 비우면 가장 높은 레벨 + 1
discountobject등급 할인(아래 키). 비우면 쓰지 않음
discount.enabledboolean등급 할인을 주는가
discount.thresholdnumber이 금액(원) 이상 살 때만. 0 이면 조건 없음
discount.valuenumber값 — unit 이 PERCENT 면 %(정수), WON 이면 원
discount.unitstring단위 코드값
discount.max_amountnumber한 번에 줄 수 있는 최대 금액(원). 0 이면 제한 없음
rewardobject등급 적립금(아래 키). 비우면 쓰지 않음
reward.enabledboolean등급 적립금을 주는가
reward.thresholdnumber이 금액(원) 이상 살 때만. 0 이면 조건 없음
reward.valuenumber값 — unit 이 PERCENT 면 %(정수), WON 이면 원
reward.unitstring단위 코드값
reward.max_amountnumber한 번에 줄 수 있는 최대 금액(원). 0 이면 제한 없음
bash요청
curl -X POST 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/levels' \
  -H 'Authorization: Bearer msat_8Hk2wQ7...' \
  -H 'Content-Type: application/json' \
  -d '{"name":"골드","level":5,"discount":{"enabled":true,"threshold":30000,"value":10,"unit":"PERCENT","max_amount":5000},"reward":{"enabled":true,"threshold":0,"value":2,"unit":"PERCENT"}}'
json201 Created
{
  "name": "골드",
  "level": 5,
  "sort_order": 5,
  "is_default": false,
  "is_guest": false,
  "discount": {
    "enabled": true,
    "threshold": 30000,
    "value": 10,
    "unit": "PERCENT",
    "max_amount": 5000
  },
  "reward": {
    "enabled": true,
    "threshold": 0,
    "value": 2,
    "unit": "PERCENT",
    "max_amount": 0
  },
  "level_unique": "6accb438c2ca90eedea62121",
  "created": "2026-10-12T10:19:36.716Z",
  "updated": "2026-10-12T10:19:36.716Z",
  "member_count": 0
}

위 예시는 '3만 원 이상 살 때 10% 할인(최대 5,000원), 2% 적립' 인 골드 등급입니다.

json400 — 이미 쓰는 레벨
{
  "code": "LevelDuplicated",
  "message": "레벨 5은(는) 이미 [골드] 등급이 쓰고 있습니다. 다른 값을 입력하세요."
}

오류

상태code언제
400LevelDuplicated다른 등급이 쓰는 레벨
400LevelLimit등급이 30개를 넘음
400InvalidParameterValue이름이 없음 · 레벨이 0 이하 · 비율이 100% 초과 · 음수
401MissingLoginSessionAuthorization 헤더에 Bearer 토큰이 없음
401InvalidAccessToken토큰이 틀리거나 만료 · 폐기됨
403InsufficientScope토큰에 customers:write 가 없음

수정

PATCHhttps://api.mallstory.kr/v1/shop/{shop_unique}/levels/{level_unique}

권한 customers:write

보낸 필드만 바뀝니다. discount · reward 도 안의 키 하나만 보내면 나머지는 그대로입니다. 필드는 생성과 같습니다.

bash요청
curl -X PATCH 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/levels/6accb438c2ca90eedea62121' \
  -H 'Authorization: Bearer msat_8Hk2wQ7...' \
  -H 'Content-Type: application/json' \
  -d '{"discount":{"value":15}}'
json200 OK
{
  "name": "골드",
  "level": 5,
  "sort_order": 5,
  "is_default": false,
  "is_guest": false,
  "discount": {
    "enabled": true,
    "threshold": 30000,
    "value": 15,
    "unit": "PERCENT",
    "max_amount": 5000
  },
  "reward": {
    "enabled": true,
    "threshold": 0,
    "value": 2,
    "unit": "PERCENT",
    "max_amount": 0
  },
  "level_unique": "6accb438c2ca90eedea62121",
  "created": "2026-10-12T10:19:36.716Z",
  "updated": "2026-10-12T10:19:37.726Z",
  "member_count": 0
}

할인율만 10% → 15% 로 바뀌고 조건 · 최대 금액 · 적립금은 그대로입니다.

  • 비회원 등급은 이름만 바뀝니다 — discount · reward 를 보내도 늘 비어 있습니다(400 이 아님).

오류

상태code언제
400LevelDuplicated다른 등급이 쓰는 레벨로 바꿈
404LevelNotExist없는 키이거나 지운 등급
401MissingLoginSessionAuthorization 헤더에 Bearer 토큰이 없음
401InvalidAccessToken토큰이 틀리거나 만료 · 폐기됨
403InsufficientScope토큰에 customers:write 가 없음

삭제

DELETEhttps://api.mallstory.kr/v1/shop/{shop_unique}/levels/{level_unique}

권한 customers:write

소프트 삭제입니다 — 지난 주문에 그때의 등급이 남습니다.

bash요청
curl -X DELETE 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/levels/6accb438c2ca90eedea62121' \
  -H 'Authorization: Bearer msat_8Hk2wQ7...'
json200 OK
{
  "deleted": true,
  "level_unique": "6accb438c2ca90eedea62121"
}
json400 — 회원이 쓰는 등급
{
  "code": "LevelInUse",
  "message": "이 등급을 쓰는 회원이 1명 있습니다. 다른 등급으로 옮긴 뒤에 지워 주세요."
}
json400 — 기본 등급
{
  "code": "LevelDefaultLocked",
  "message": "기본 등급은 지울 수 없습니다. 새로 가입한 회원이 받을 등급입니다."
}
json400 — 비회원 등급
{
  "code": "LevelGuestLocked",
  "message": "비회원 등급은 지울 수 없습니다. 로그인하지 않은 손님에게 적용하는 등급입니다."
}

오류

상태code언제
400LevelInUse이 등급을 쓰는 회원이 있음 — 다른 등급으로 옮긴 뒤 지움
400LevelDefaultLocked기본 등급
400LevelGuestLocked비회원 등급
404LevelNotExist없는 키이거나 이미 지운 등급
401MissingLoginSessionAuthorization 헤더에 Bearer 토큰이 없음
401InvalidAccessToken토큰이 틀리거나 만료 · 폐기됨
403InsufficientScope토큰에 customers:write 가 없음