쿠폰 생성
주문 쿠폰(`ORDER`)·상품 쿠폰(`PRODUCT`)을 만든다. 발급 방식은 코드 입력(`CODE`)과 셀러 지급(`MANUAL`)이다. 정률 할인은 10원 단위로 내리고 최대 할인액을 둘 수 있다. 쿠폰끼리는 주문상품 한 줄에 상품 쿠폰 1장, 주문에 주문 쿠폰 1장까지 함께 쓴다. 발급·사용이 시작되면 혜택·조건·대상·사용 시작일은 바꿀 수 없다. 배송비 쿠폰·첫 구매 조건은 아직 받지 않는다(400 `COUPON_FEATURE_UNAVAILABLE`).
주문 쿠폰(ORDER)·상품 쿠폰(PRODUCT)을 만든다. 발급 방식은 코드 입력(CODE)과 셀러 지급(MANUAL)이다. 정률 할인은 10원 단위로 내리고 최대 할인액을 둘 수 있다. 쿠폰끼리는 주문상품 한 줄에 상품 쿠폰 1장, 주문에 주문 쿠폰 1장까지 함께 쓴다. 발급·사용이 시작되면 혜택·조건·대상·사용 시작일은 바꿀 수 없다. 배송비 쿠폰·첫 구매 조건은 아직 받지 않는다(400 COUPON_FEATURE_UNAVAILABLE).
accessTokenAuthorizationBearer <token>Sayren 계정 토큰(로그인 토큰 또는 개인 액세스 토큰, RFC 9068 JWT)
X-Store-Id*string대상 상점 id. 토큰의 상점 범위 밖이면 403 STORE_NOT_GRANTED, 없으면 400 STORE_ID_REQUIRED다
idempotency-key?string멱등키. 같은 키로 다시 보내면 처음 결과를 돌려주고 한 번만 적용한다. 재시도에는 같은 키를 쓴다
length <= 255application/json- body
name*string구매자에게 보이는 쿠폰 이름. 1~60자
1 <= length <= 60description?|구매자에게 보이는 설명. 300자까지
length <= 300kind*string쿠폰 종류. ORDER=주문 쿠폰(대상 상품 합계에서 할인), PRODUCT=상품 쿠폰(주문상품 한 줄에서 할인), DELIVERY=배송비 쿠폰(기본 배송비에서 할인, 지역 추가 배송비 제외)
"ORDER""PRODUCT""DELIVERY"benefit*conditions?사용 조건. 생략한 항목은 기본값(최소 금액 0, 회원 전용, 즉시할인과 중복 가능)
target?대상 상품·카테고리. 생략하면 전 상품
issueMethod*string발급 방식. CODE=구매자가 주문서에 코드를 입력한다, MANUAL=셀러가 회원을 골라 지급한다, DOWNLOAD=구매자가 스토어프론트에서 받는다, SIGNUP=회원가입 때 자동으로 지급한다
"CODE""MANUAL""DOWNLOAD""SIGNUP"code?string쿠폰 코드 — 발급 방식이 CODE일 때 필수. 영문·숫자·-·_ 6~30자, 대소문자 구분 없음(대문자로 저장). 상점 안에서 유일하다
^[A-Za-z0-9_-]{6,30}$startsAt?|사용 시작 시각(ISO 8601, 시간대 포함). 생략하면 바로 쓸 수 있다
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$date-timeendsAt?|사용 종료 시각(ISO 8601, 시간대 포함). 이 시각부터 못 쓴다. 생략하면 제한이 없다. 이미 지급한 쿠폰의 유효 기간은 지급 때 정해지므로 뒤에 종료일을 늦춰도 늘어나지 않는다
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$date-timevalidDaysAfterIssue?|발급 후 유효 일수 — 발급형(MANUAL·DOWNLOAD·SIGNUP) 쿠폰만. 쿠폰 종료일과 둘 중 먼저 끝나는 쪽이 적용된다
1 <= value <= 3650totalIssueLimit?|총 발급 수 한도. 생략하면 무제한. 다운로드·회원가입 쿠폰은 한도에 닿으면 더 발급하지 않는다
1 <= value <= 10000000totalUseLimit?|총 사용 수 한도. 결제 중인 예약도 센다. 생략하면 무제한
1 <= value <= 10000000perMemberIssueLimit?|1인 발급 수 한도(셀러 지급·다운로드). 생략하면 1인 1장. 회원가입 쿠폰은 1장 고정이라 1만 받는다
1 <= value <= 10000000perMemberUseLimit?|1인 사용 수 한도(코드 입력형). 생략하면 무제한. 비회원에게 여는 쿠폰은 둘 수 없다
1 <= value <= 10000000성공
application/json- response
meta*data*error*|nullcurl -X POST 'https://api.sayren.io/v1/coupons' \ -H 'X-Store-Id: string' \ -H 'Content-Type: application/json' \ -d '{ "name": "string", "kind": "ORDER", "benefit": { "type": "RATE", "value": 1, "maxDiscountAmount": 1 }, "issueMethod": "CODE"}'{ "meta": { "status": 201, "code": "OK", "message": "OK", "isSuccess": true }, "data": { "couponId": "string", "name": "string", "description": "string", "kind": "ORDER", "benefit": { "type": "RATE", "value": 1, "maxDiscountAmount": 1 }, "conditions": { "minOrderAmount": 0, "firstOrderOnly": true, "memberOnly": true, "stackWithInstantDiscount": true }, "target": { "includeProductIds": [ "string" ], "includeCategoryIds": [ "string" ], "excludeProductIds": [ "string" ], "excludeCategoryIds": [ "string" ] }, "issueMethod": "string", "code": "string", "startsAt": "string", "endsAt": "string", "validDaysAfterIssue": 0, "totalIssueLimit": 0, "totalUseLimit": 0, "perMemberIssueLimit": 0, "perMemberUseLimit": 0, "issuedCount": 0, "reservedCount": 0, "usedCount": 0, "status": "ACTIVE", "locked": true, "lockedAt": "string", "createdAt": "string", "updatedAt": "string" }, "error": null}